Sur Ubuntu, chaque fois que je me connecte en SSH à une machine, je reçois une invite pour déverrouiller ma clé privée et jusqu'à ce que je quitte ma session OS, je peux me connecter en SSH à autant de machines que je veux en utilisant l'authentification par clé et sans avoir à entrer quoi que ce soit. Sur Debian, je vais recevoir une invite pour un mot de passe à chaque fois que je fais quelque chose. Si je lance "ssh-add", alors je n'aurai plus à entrer de phrase secrète tant que j'utilise cette même fenêtre de terminal. Si j'ouvre un nouveau terminal, je devrai exécuter à nouveau ssh-add. Est-ce que quelqu'un a des astuces pour que Debian 7.1 copie la fonctionnalité offerte par Ubuntu ici ?
Réponse
Trop de publicités?Le secret est qu'il y a un ssh-agent qui s'exécute en arrière-plan et qu'Ubuntu enregistre les paramètres pour ce processus quelque part. Ainsi, pour que les choses se passent comme ça, vous devez a) démarrer ssh-agent en arrière-plan et b) enregistrer l'ID de ce processus quelque part afin de pouvoir ensuite sourcer la valeur de l'ID pour tous les shells ultérieurs.
Lorsque ssh-agent est lancé, il affichera son ID et d'autres informations que vous voudrez sourcer ultérieurement lors du lancement de nouveaux shells. Quelque chose comme ce qui suit dans votre ~/.bashrc
pourrait fonctionner :
setf="$HOME/.ssh_agent_settings" # nom du fichier pour stocker l'ID, etc.
[ -r $setf ] && . $setf > /dev/null 2>1 # sourcer l'ID, etc. si le fichier existe
kill -0 $SSH_AGENT_PID > /dev/null 2>&1 # kill -0 échouera si le processus n'existe pas
[ "$?" -eq 0 ] && exit # kill renvoie 0 en cas de succès
ssh-agent > $setf # le processus n'existe pas, donc nous en créons un
. $setf > /dev/null 2>&1 # sourcer l'ID du processus fraîchement créé
Cela lancera ssh-agent lors de l'initialisation du shell, au cas où il ne serait pas déjà en cours d'exécution, ou simplement sourcer l'ID du ssh-agent et les variables AUTH_SOCK depuis ~/.ssh_agent_settings
.