Faire un ssh-add sur ssh / slogin si la clé n'est pas dans ssh-agent?

10

Lorsque j'exécute Gnome, ssh-agent exécutera ssh-add lors de slogin / ssh si l'identité n'est pas chargée. Je veux imiter ce comportement sur des shells distants, mais tout ce que je trouve suggère d'exécuter ssh-add lors de la connexion. Je ne veux exécuter ssh-add que si j'exécute ensuite slogin / ssh sur le shell distant, pas à chaque connexion.

Pete Ashdown
la source

Réponses:

9

J'ai trouvé une solution pour cela via le shell bash.

Ajoutez à .bashrc:

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ `ssh-add -l` != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}
Pete Ashdown
la source
7

Il existe en fait un moyen encore plus simple. ssh-add -lrenvoie true (0) s'il y a des clés et false (1) sinon, donc votre première fonction peut être remplacée par ceci:

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

 

Relsqui
la source
1

Encore plus simple dans la partie «c'est une session interactive»

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id
user1458574
la source
0

Les nouvelles versions d'OpenSSH peuvent ajouter la clé à l'agent lors de la première utilisation, si vous l'activez AddKeysToAgent yesdans votre ~/.ssh/config.

(J'ai appris cela sur /superuser//a/1114257/42546 . Je ne sais pas quelle est la bonne étiquette StackOverflow pour faire face aux réponses sur divers sites StackExchange.)

Marius Gedminas
la source