Робити ssh-add на ssh / slogin, якщо ключ не в ssh-agent?


10

Коли я запускаю Gnome, ssh-агент запустить ssh-add на слоган / ssh, якщо ідентифікація не завантажена. Я хочу імітувати цю поведінку на віддалених оболонках, але все, що я знаходжу, пропонує запустити ssh-add після входу. Я хочу запустити ssh-add, лише якщо згодом запускаю slogin / ssh на віддаленій оболонці, а не кожен раз, коли я входжу в систему.

Відповіді:


9

Я розробив рішення для цього через оболонку bash.

Додати в .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

Насправді є ще простіший спосіб. ssh-add -lповертає true (0), якщо в іншому випадку є ключі та false (1), тож ваша перша функція може бути замінена на цю:

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

 


1

Ще простіше в додати частину «це інтерактивна сесія»

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

0

Новіші версії OpenSSH можуть додати ключ до агента при першому використанні, якщо ви його включите AddKeysToAgent yesу свою ~/.ssh/config.

(Я дізнався про це з https://superuser.com/a/1114257/42546 . Я не впевнений, що є правильним етикетом StackOverflow для вирішення відповідей на різних сайтах StackExchange.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.