Accès SFTP avec clef SSH

Bonjour à toutes et tous,

Pour faire suite à un précédant post concernant la sauvegarde de Yunohost, je tente de faire une sauvegarde du répertoire yunohost.backup/archives/ via un NAS synology ds 218 Play par SFTP.

Sur mon NAS j’ai généré une paire de clef SSH puis j’ai ajouté la clef publique SSH à l’utilisateur admin de Yunohost.
En me connectant en SSH aucun problème, ssh ne me demande pas de mot de passe.
Par contre en utilisant cette commande rsync il me demande quand même le mot de passe:

rsync -e "ssh -p 2022 -i $HOME/.ssh/id_rsa" -avz --delete-after --progress admin@toto.fr:/home/yunohost.backup/archives/ /toto/Sauvegardes/backup_yunohost/

Du coup impossible pour moi d’ajouter une tâche planifiée sur le NAS si il me demande le mot de passe…

Dans le contexte de rsync, est-ce que $HOME est à la bonne valeur?

Essaie peut-être avec ..."ssh -p 2022 -i $HOME/.ssh/id_rsa -v"... pour rendre SSH un peu plus verbeux et comprendre le problème. (ça peut peut-être ne pas marcher en fait, je ne sais pas comment rsync fonctionne avec -e)

@tituspijean J’ai testé en changeant le $HOME pour le chemin et avec le -v sur SSH j’ai ceci:

OpenSSH_8.2p1, OpenSSL 1.1.1n  15 Mar 2022
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to inrepublica.fr [*************] port ****.
debug1: Connection established.
debug1: identity file /volume1/homes/toto/.ssh/id_rsa type 0
debug1: identity file /volume1/homes/toto/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.4p1 Debian-5+deb11u1
debug1: match: OpenSSH_8.4p1 Debian-5+deb11u1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to toto.fr:2022 as 'toto'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:********************************************
debug1: Host '[toto.fr]:2022' is known and matches the ECDSA host key.
debug1: Found key in /var/services/homes/toto/.ssh/known_hosts:1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /volume1/homes/toto/.ssh/id_rsa RSA SHA256:************************* explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>
debug1: SSH2_MSG_SERVICE_ACCEPT received
Debian GNU/Linux 11
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /volume1/homes/toto/.ssh/id_rsa RSA SHA256:********************** explicit
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

Et ensuite j’ai le prompt du mot de passe

Ce qui est bizarre c’est qu’en SSH simple cela fonctionne bien:

toto@NAS_218Play:/volume1/homes$ ssh admin@toto.fr -p 2022 -i /volume1/homes/toto/.ssh/id_rsa -v
OpenSSH_8.2p1, OpenSSL 1.1.1n  15 Mar 2022
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to inrepublica.fr [2001:41d0:305:2100::143] port 2022.
debug1: Connection established.
debug1: identity file /volume1/homes/toto/.ssh/id_rsa type 0
debug1: identity file /volume1/homes/toto/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.4p1 Debian-5+deb11u1
debug1: match: OpenSSH_8.4p1 Debian-5+deb11u1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to toto.fr:2022 as 'admin'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:************
debug1: Host '[toto.fr]:2022' is known and matches the ECDSA host key.
debug1: Found key in /var/services/homes/toto/.ssh/known_hosts:1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /volume1/homes/toto/.ssh/id_rsa RSA SHA256:************** explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>
debug1: SSH2_MSG_SERVICE_ACCEPT received
Debian GNU/Linux 11
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /volume1/homes/toto/.ssh/id_rsa RSA SHA256:*************** explicit
debug1: Server accepts key: /volume1/homes/toto/.ssh/id_rsa RSA SHA256:*********** explicit
debug1: Authentication succeeded (publickey).
Authenticated to toto.fr ([2001:41d0:305:2100::143]:2022).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Remote: /home/admin/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug1: Remote: /home/admin/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
Linux inrepublica.fr 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64

Attention, dans la première commande tu t’identifies en tant que toto (échec), et dans la seconde admin (succès).

Remplace toto@toto.fr par admin@toto.fr.

@tituspijean J’utilise bien les mêmes identifiants j’ai juste caché un peu des données perso dans mes logs. Avec la première commande si je rentre le mot de passe, la synchronisation rsync se fait correctement.

C’est perturbant. :sweat_smile:

Commande rsync: debug1: Authenticating to toto.fr:2022 as 'toto'
Commande ssh directe: debug1: Authenticating to toto.fr:2022 as 'admin'

Confirmes-tu que ta clé publique est bien enregistrée dans le serveur de destination à la fois pour toto et admin?

Corrige les logs si besoin.

Alors sur mon NAS qui va initier la connexion c’est l’utilisateur qu’on va appeler “toto”. Sur Yunohost l’accès au répertoire backup étant restreint j’ai opté pour l’utilisateur admin.

Sur yunohost j’ai bien ajouté ma clef dans /home/admin/.ssh/authorized_keys

En ssh la connection depuis mon NAS vers YUNOHOST marche bien avec la clef sans mot de passe.
Par contre dès que RSYNC rentre dans la boucle il me demande le mot de passe.

Si tu veux le log brut par irc je peux te fournir ça sans problème, mais sur le forum je suis moyen chaud quand même :sweat_smile:

Pour une raison que j’ignore voici la commande qui fonctionne:

rsync -avz --progress --delete-after -e "ssh -p 2022" toto_admin@toto.fr:/home/yunohost.backup/archives/ /volume1/Sauvegardes/backup_yunohost/

Merci pour l’aide :grin:

J’en ai profité pour faire un petit pense bête sur mon blog pour ceux que ça intéresse:
Sauvegarde Yunohost sur un NAS Synology distant

1 Like