SSH-agent se vide de ses clés à l'ouverture de session

Bonjour,

Ca se passe sur un PI3 fraichement initialisé avec Raspbian lite legacy 64 bits. D’ailleurs, la raison pour laquelle j’ai réinstallé Raspbian est précisemment parce que j’avais le problème que j’expose ici.

A l’aide d’une session SSH entre un PC Kubuntu et le PI3, j’ai généré sur le PI3 une clé SSH pour que le PI3 se connecte sur un serveur pour faire des sauvegardes régulières. J’ai ajouté la clé à l’agent SSH du PI3, et l’instruction ssh-add -l me confirme que la clé a bien été ajoutée.

Ensuite, je ferme la session SSH entre Kubuntu et le PI3, je la rouvre, et l’agent n’est plus joignable. Je fais eval « $(ssh-agent) » pour le réveiller, puis à nouveau ssh-add -l, et je vois que l’agent a perdu ses clés.

Ou, plus marrant encore, si je garde ouverte la session avec laquelle j’ai ajouté la clé, et que j’en ouvre une deuxième entre Ubuntu et le PI3, l’agent a bien gardé les clés dans la première session, mais les a perdues dans la deuxième.

Quelle est donc cette diablerie ?

Bonjour,

Avez-vous eu un fonctionnement normal ou cela n’a jamais fonctionné ?

A+

Bonjour,

Disons que cet aspect en particulier, je ne me souviens pas m’y être intéressé. Pendant des années, ça a marché de la façon suivante : j’avais généré les clés sur le PI3, ajouté la clé privée à l’agent et transféré la clé publique sur le serveur, et je montais tous les jours (au travers d’un script) le HDD du server sur le PI3 par fstab et invoquant sshfs. Je n’ai jamais eu de problème significatif.

J’ai dû changer les clés, et c’est en installant les nouvelles clés que j’ai remarqué cette coquetterie.

Sur un forum en anglais, on m’a dit que c’est normal, qu’il y a plusieurs agents, et qu’en faisant eval$« (ssh-agent) » je lance un nouvel agent qui ne peut pas avoir les clés de l’agent d’origine.

Je veux bien croire que c’est vrai, mais c’est un fonctionnement bizarre. Ca veut dire qu’à chaque fois que j’ouvre une nouvelle session, je dois retrouver ce qu’il est advenu de l’agent d’origine pour le ranimer. Pas très pratique. Et puis je n’ai pas ça sous Kubuntu.

Bonjour,

Je rejoint l’avis que vous avez eu avec l’autre forum, le lancement d’un agent est propre à l’environnement à partir duquel il est lancé. Chaque session possède ses clés autorisées.

Je vois ssh agent comme un outil coté utilisateur.
En général, pour la communication SSH sans mot de passe entre machines, ssh-agent n’est pas utilisé. Ca me semble compliqué de lancer un ssh-agent à chaque démarrage de machine.
Ce que l’on voit en pratique, c’est l’utilisation de clés générée spécifiquement entre 2 machines.
Sur la machine A avec l’utilisateur spécifique à cette communication on génère un couple de clés « id_rsa_AtoB » avec une passphrase vide.
On exporte la clé publique sur la machine B.
Pour plus de sécurité, on ajoute dans le fichier authorized_keys l’option au début de la ligne

command="commande utilisée pour la sauvegarde sur cette machine" ,restrict ssh-rsa .........

Pour plus d’info je vous invite à vous documenter sur le net avec cette requête dans un moteur de recherche: « ssh authorized_keys restrict command »

Ceci permet de n’autoriser que cette commande. Aucune manipulation est à faire ensuite pour les sauvegardes.

A+

Merci pour ces explications très intéressantes.

Finalement, je me suis passé de l’agent SSH. Après quelques essais décevants avec rclone, je suis revenu à SSHFS et j’indique le chemin vers la clé privée dans l’instruction de montage (en réalité dans fstab).

Bonne continuation.