Я хочу запустить ssh-agent (с параметром максимального срока службы), но не добавлять ключи при запуске, а вместо этого добавлять их по требованию.
Как и при первом входе в систему на каком-либо сервере, он должен запросить парольную фразу, в следующий раз (если я не ждал более часа) он должен подключиться корректно:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Я не хочу вручную помнить о запуске ssh-add каждый раз. (например, введенная фраза только для ssh и «О, он не запомнил, нужно перепечатать»).
Как настроить ssh для автоматического добавления ключа в ssh-agent, если пользователь предоставил ключевую фразу?
Ответы:
ssh поддерживает добавление ключа к агенту при первом использовании (начиная с версии 7.2). Вы можете включить эту функцию, поместив следующее в
~/.ssh/config
:Это также работает при использовании производных инструментов, таких как git.
Из журнала изменений 7.2 :
источник
Вы могли бы обмануть и поставить что-то вроде
alias ssh='ssh-add -l || ssh-add && ssh'
вашего.bashrc
/.profile
. Это первый запускssh-add -l
, который может возвращать 0 (есть ключи на агенте), 1 (нет ключей) или 2 (агент не запущен); если он вернет 0,ssh
будет работать; если 1,ssh-add
будет работать, а затемssh
; если 2,ssh-add
потерпит неудачу иssh
не будет запущен. Заменить&&
с ,;
если вы хотитеssh
работать , даже когда нет агента работает.источник
alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'
. Вы можете даже поместить это в цикл для всех ваших ключей ssh и генерировать псевдонимы. Грязный хак, но это работает.До тех пор пока ssh не поддерживает auto-call-ssh-add, я добавил это в свой
.bashrc
, основываясь на предложении Ковенского:Псевдоним создается только в том случае, если идентификатор не добавляется, а псевдоним уничтожается сам после запуска.
Таким образом, обычная команда ssh используется после добавления идентификатора.
источник
ssh-add -t ...
) ключ, добавленный в ssh-agent, может внезапно исчезнуть, но псевдоним останется, так как ключ все еще находится в памяти.Я использую следующую функцию оболочки:
Сначала он разрешает конфигурацию хоста, к которому я пытаюсь подключиться, затем добавляет возможные ключи для этого хоста в ssh-agent, если они еще не добавлены, и, наконец, подключается к хосту. Я уверен, что это может быть улучшено, поэтому я открыт для обратной связи.
источник