¿Haciendo un ssh-add sobre ssh / slogin si la clave no está en ssh-agent?


10

Cuando estoy ejecutando Gnome, ssh-agent ejecutará ssh-add en slogin / ssh si la identidad no está cargada. Quiero imitar este comportamiento en shells remotos, pero todo lo que encuentro sugiere ejecutar ssh-add al iniciar sesión. Solo quiero ejecutar ssh-add si posteriormente ejecuto slogin / ssh en el shell remoto, no cada vez que inicio sesión.

Respuestas:


9

Resolví una solución para esto a través de bash shell.

Añadir a .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

En realidad, hay una forma aún más simple. ssh-add -ldevuelve verdadero (0) si hay claves y falso (1) de lo contrario, por lo que su primera función se puede reemplazar con esto:

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

 


1

Aún más simple en la parte "esta es una sesión interactiva" agregar

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

0

Las versiones más recientes de OpenSSH pueden agregar la clave al agente en el primer uso, si habilita AddKeysToAgent yesen su ~/.ssh/config.

(Lo aprendí de /superuser//a/1114257/42546 . No estoy seguro de cuál es la etiqueta adecuada de StackOverflow para hacer frente a las respuestas en varios sitios de StackExchange).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.