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.

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

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
}

 


1

Lebih sederhana lagi di bagian «sesi interaktif» ini

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.