run-qemu.sh : SSH pubkey vers /home/root/.ssh/, pas /root/.ssh/

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
This commit is contained in:
Votre Nom 2026-05-16 17:27:35 +02:00
parent 3fe50208a1
commit 44fd7c282b

View file

@ -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