Beryl::CLI::PrepRescue
Constants
DEFAULT_BIND = "127.0.0.1"
DEFAULT_PORT = 8080
DEFAULT_PUBKEY = "~/.ssh/id_ed25519.pub"
MACOS_FW_CTL = "/usr/libexec/ApplicationFirewall/socketfilterfw"
PUBLIC_IP_TIMEOUT = 3.seconds
PUBLIC_IP_URL = "https://api.ipify.org"
SETUP_SCRIPT_TEMPLATE = "#!/bin/sh\n# Script de provisioning Debian/Ubuntu généré par `beryl prep-rescue`.\n# Installe openssh-server et injecte la clé publique dans /root/.ssh/.\nset -eu\n\nHOST_URL=\"__HOST_URL__\"\n\necho \"==> [beryl prep-rescue] apt update + openssh-server + curl\"\nexport DEBIAN_FRONTEND=noninteractive\napt-get update -qq\napt-get install -y -qq openssh-server curl\n\necho \"==> [beryl prep-rescue] clé SSH root\"\nmkdir -p /root/.ssh && chmod 700 /root/.ssh\ncurl -fL \"$HOST_URL/k\" >> /root/.ssh/authorized_keys\nchmod 600 /root/.ssh/authorized_keys\nsort -u /root/.ssh/authorized_keys -o /root/.ssh/authorized_keys\n\n# Ne garde que la clé d'hôte ED25519. Évite de polluer known_hosts côté\n# opérateur avec trois entrées par VM (RSA, ECDSA, ED25519) à purger à\n# chaque recréation. Aligné sur Mozilla Modern OpenSSH.\necho \"==> [beryl prep-rescue] retire les clés d'hôte RSA/ECDSA\"\nrm -f /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub\nrm -f /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key.pub\n\nsystemctl enable --now ssh\n\necho \"==> [beryl prep-rescue] terminé. beryl bootstrap peut maintenant se connecter.\""
Gabarit du script de provisioning Debian/Ubuntu.
__HOST_URL__ est substitué à la volée par l'URL de base complète.
Principe minimaliste : on ne touche à RIEN dans sshd_config. Debian 12+
et Ubuntu 22.04+ ont déjà PermitRootLogin prohibit-password par défaut
(accepte la clé, refuse le mot de passe). Comme aucun mot de passe root
n'est défini, la seule auth possible est par clé — exactement ce qu'on
veut. Le script se contente donc d'installer sshd et d'injecter la clé.