Делаете ssh-add для ssh / slogin, если ключ отсутствует в ssh-agent?

Когда я запускаю Gnome, ssh-agent запускает ssh-add на slogin / ssh, если имя не загружено. Я хочу имитировать это поведение на удаленных оболочках, но все, что я нахожу, предлагает запустить ssh-add при входе в систему. Я хочу запускать ssh-add только в том случае, если впоследствии запускаю slogin / ssh на удаленной оболочке, а не при каждом входе в систему.

10
задан 18 February 2011 в 20:55

4 ответа

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

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

& nbsp;

0
ответ дан 18 February 2011 в 20:55

Еще проще в части «это интерактивный сеанс» добавить

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id
0
ответ дан 18 February 2011 в 20:55

Я разработал решение для этого через оболочку 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 $@
}
0
ответ дан 18 February 2011 в 20:55

Более новые версии OpenSSH могут добавить ключ к агенту при первом использовании, если вы включите AddKeysToAgent yes в вашем ~/.ssh/config.

(Я узнал об этом из https://superuser.com/a/1114257/42546 . Я не уверен, каков правильный этикет StackOverflow для того, чтобы справляться с ответами на различных сайтах StackExchange.)

0
ответ дан 18 February 2011 в 20:55

Другие вопросы по тегам:

Похожие вопросы: