it-swarm.com.de

Ssh-add auf ssh / slogin ausführen, wenn der Schlüssel nicht in ssh-agent enthalten ist?

Wenn ich Gnome ausführe, führt ssh-agent bei slogin/ssh ssh-add aus, wenn die Identität nicht geladen ist. Ich möchte dieses Verhalten auf Remote-Shells nachahmen, aber alles, was ich finde, legt nahe, ssh-add beim Anmelden auszuführen. Ich möchte ssh-add nur ausführen, wenn ich anschließend slogin/ssh auf der Remote-Shell ausführe, nicht jedes Mal, wenn ich mich anmelde.

10
Pete Ashdown

Ich habe eine Lösung dafür über die Bash-Shell ausgearbeitet.

Hinzufügen zu .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 [email protected]
}

ssh() {
check-ssh-add
/usr/bin/ssh [email protected]
}

scp() {
check-ssh-add
/usr/bin/scp [email protected]
}

sftp() {
check-ssh-add
/usr/bin/sftp [email protected]
}
9
Pete Ashdown

Es gibt tatsächlich einen noch einfacheren Weg. ssh-add -l gibt true (0) zurück, wenn es Schlüssel gibt, andernfalls false (1), sodass Ihre erste Funktion folgendermaßen ersetzt werden kann:

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

7
Relsqui

Noch einfacher ist es im Teil "Dies ist eine interaktive Sitzung" hinzuzufügen

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

Neuere Versionen von OpenSSH können den Schlüssel bei der ersten Verwendung zum Agenten hinzufügen, wenn Sie AddKeysToAgent yes In Ihrem ~/.ssh/config Aktivieren.

(Ich habe dies erfahren von https://superuser.com/a/1114257/42546 . Ich bin nicht sicher, welche StackOverflow-Etikette für das Verarbeiten von Antworten auf verschiedenen StackExchange-Sites geeignet ist.)

0
Marius Gedminas