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.

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 $@
}

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
}

 


1

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

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id

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.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.