Je souhaite exécuter ssh-agent (avec l'option de durée de vie maximale), mais sans ajouter de clé au démarrage, mais les ajouter à la demande.
Comme la première fois que je me connecte à un serveur, il devrait demander la phrase secrète. La prochaine fois (sauf si j'ai attendu plus d'une heure), il doit se connecter proprement:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Je ne veux pas me souvenir manuellement de l'exécution de 'ssh-add' à chaque fois. (par exemple, mot de passe entré pour juste pour ssh et "Oh, il ne s’est pas souvenu, il faut ressaisir").
Comment configurer ssh pour ajouter automatiquement la clé à ssh-agent si l'utilisateur a fourni la phrase secrète?
Réponses:
ssh prend en charge l'ajout d'une clé à l'agent lors de la première utilisation (depuis la version 7.2). Vous pouvez activer cette fonctionnalité en mettant les éléments suivants dans
~/.ssh/config
:Cela fonctionne également lorsque vous utilisez des outils dérivés, tels que git.
À partir du journal des modifications 7.2 :
la source
Vous pouvez tricher et mettre quelque chose comme
alias ssh='ssh-add -l || ssh-add && ssh'
sur votre.bashrc
/.profile
. Cette première exécutionssh-add -l
peut renvoyer 0 (il y a des clés sur l'agent), 1 (pas de clé) ou 2 (aucun agent en cours d'exécution); s'il retourne 0,ssh
s'exécutera; si 1,ssh-add
courra et alorsssh
; si 2,ssh-add
échouera etssh
ne sera pas exécuté. Remplacez le&&
avec par;
si vous voulezssh
exécuter même si aucun agent n'est en cours d'exécution.la source
alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'
. Vous pouvez même mettre cela en boucle pour toutes vos clés ssh et générer des alias. Un bidouillage sale, mais ça marche.Jusqu'à ce que ssh
.bashrc
prenne en charge auto-call-ssh-add, j'ai ajouté ceci dans ma proposition, basée sur la proposition de Kovensky:L'alias est créé uniquement si l'identité n'est pas ajoutée et l'alias se détruit une fois exécuté.
De cette façon, la commande ssh habituelle est utilisée après que l'identité a été ajoutée.
la source
ssh-add -t ...
), la clé ajoutée à ssh-agent peut disparaître brusquement, mais le pseudonyme restera car il est toujours en mémoire.J'utilise la fonction shell suivante:
Il résout d'abord la configuration de l'hôte auquel je tente de me connecter, puis ajoute les clés possibles de cet hôte à ssh-agent si elles ne sont pas encore ajoutées et se connecte enfin à l'hôte. Je suis sûr que cela peut être amélioré, alors je suis ouvert aux commentaires.
la source