From 44fd7c282b8f0d30818ded87489ee445a23a31aa Mon Sep 17 00:00:00 2001 From: Votre Nom Date: Sat, 16 May 2026 17:27:35 +0200 Subject: [PATCH] run-qemu.sh : SSH pubkey vers /home/root/.ssh/, pas /root/.ssh/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug détecté en runtime : sshd OpenSSH 9.8 sur Redox cherche authorized_keys dans le homedir de l'utilisateur, qui sur Redox est /home/root/ et NON /root/ comme sur Linux. Le déploiement précédent mettait le fichier au mauvais endroit → ssh tombait toujours en password. Fix : injecter dans \$MOUNT/home/root/.ssh/authorized_keys avec perms 700/600. Le path Linux /root/.ssh/ est laissé non-touché (vide ou inexistant). Validé : après ce fix le `ssh root@localhost -p 8022` connecte directement sans password. Leyoda 2026 – GPLv3 --- run-qemu.sh | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/run-qemu.sh b/run-qemu.sh index e1ab624..fdff6d0 100755 --- a/run-qemu.sh +++ b/run-qemu.sh @@ -149,9 +149,11 @@ for script in "$ROOT/tools/redox-scripts"/*; do fi done -# SSH : injecter la pubkey hôte dans /root/.ssh/authorized_keys du guest. -# Permet ssh root@localhost -p 8022 sans password. Cherche les pubkeys -# habituelles dans ~/.ssh/. Si plusieurs, toutes sont copiées. +# SSH : injecter la pubkey hôte dans /home/root/.ssh/authorized_keys du +# guest. ATTENTION : sous Redox le homedir de root est /home/root/ (pas +# /root/ comme Linux). sshd cherche bien sur le path Redox, sinon publickey +# est silencieusement ignoré. +# Permet `ssh root@localhost -p 8022` sans password une fois sshd lancé. SSH_DIR_HOST="$HOME/.ssh" PUBKEYS_FOUND=() for k in id_ed25519.pub id_rsa.pub id_ecdsa.pub; do @@ -160,14 +162,15 @@ for k in id_ed25519.pub id_rsa.pub id_ecdsa.pub; do fi done if [[ ${#PUBKEYS_FOUND[@]} -gt 0 ]]; then - mkdir -p "$MOUNT/root/.ssh" - chmod 700 "$MOUNT/root/.ssh" - : > "$MOUNT/root/.ssh/authorized_keys" + GUEST_ROOT_SSH="$MOUNT/home/root/.ssh" + mkdir -p "$GUEST_ROOT_SSH" + chmod 700 "$GUEST_ROOT_SSH" + : > "$GUEST_ROOT_SSH/authorized_keys" for k in "${PUBKEYS_FOUND[@]}"; do - echo "==> injecter pubkey hôte $k dans /root/.ssh/authorized_keys" - cat "$k" >> "$MOUNT/root/.ssh/authorized_keys" + echo "==> injecter pubkey hôte $k dans /home/root/.ssh/authorized_keys (homedir Redox)" + cat "$k" >> "$GUEST_ROOT_SSH/authorized_keys" done - chmod 600 "$MOUNT/root/.ssh/authorized_keys" + chmod 600 "$GUEST_ROOT_SSH/authorized_keys" else echo "WARN : aucune pubkey hôte trouvée dans $SSH_DIR_HOST/. SSH par password seulement." >&2 fi