Anahtar ssh aracısında değilse ssh / slogin üzerine ssh-add yapmak mı?


10

Gnome çalıştırırken, kimlik yüklü değilse ssh-agent slogin / ssh üzerine ssh-add komutunu çalıştırır. Uzak kabuklarda bu davranışı taklit etmek istiyorum, ancak bulduğum her şey girişte ssh-add çalıştırmayı önerir. Yalnızca ssh-add komutunu, daha sonra uzaktaki kabukta slogin / ssh çalıştırırsam, her giriş yaptığımda değil.

Yanıtlar:


9

Bunun için bash kabuğu üzerinden bir çözüm buldum.

.Bashrc dosyasına ekle:

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

Aslında daha da basit bir yol var. ssh-add -lanahtarlar varsa true (0) ve aksi takdirde false (1) döndürür, böylece ilk işleviniz bununla değiştirilebilir:

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

 


1

«Bu etkileşimli bir oturum» bölümünde daha da basit

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

0

Etkinleştirmeniz durumunda OpenSSH yeni versiyonları, ilk kullanımda ajana anahtarını ekleyebilirsiniz AddKeysToAgent yesGözlerinde farklı ~/.ssh/config.

(Bunu https://superuser.com/a/1114257/42546 adresinden öğrendim . Çeşitli StackExchange sitelerinde yanıtlarla başa çıkmak için uygun StackOverflow görgü kuralının ne olduğundan emin değilim.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.