Melakukan ssh-add pada ssh / slogin jika kunci tidak ada di ssh-agent?

10

Ketika saya menjalankan Gnome, ssh-agent akan menjalankan ssh-add pada slogin / ssh jika identitas tidak dimuat. Saya ingin meniru perilaku ini pada shell jarak jauh, tetapi semua yang saya temukan menyarankan untuk menjalankan ssh-add saat login. Saya hanya ingin menjalankan ssh-add jika saya kemudian menjalankan slogin / ssh pada remote shell, tidak setiap kali saya login.

Pete Ashdown
sumber

Jawaban:

9

Saya mencari solusi untuk ini melalui bash shell.

Tambahkan ke .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
sumber
7

Sebenarnya ada cara yang lebih sederhana. ssh-add -lmengembalikan true (0) jika ada kunci dan false (1) sebaliknya, sehingga fungsi pertama Anda dapat diganti dengan ini:

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

 

Relsqui
sumber
1

Lebih sederhana lagi di bagian «sesi interaktif» ini

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

Versi OpenSSH yang lebih baru dapat menambahkan kunci ke agen pada penggunaan pertama, jika Anda mengaktifkan AddKeysToAgent yesdi ~/.ssh/config.

(Saya telah mempelajari ini dari /superuser//a/1114257/42546 . Saya tidak yakin apa etiket StackOverflow yang tepat untuk mengatasi jawaban di berbagai situs StackExchange.)

Marius Gedminas
sumber