17.6. Вход без пароля с использованием ssh-agent
Проблема
Вводить пароли утомительно, особенно если они состоят из нескольких слов. Требуется использовать OpenSSH для открытия подключений без ввода пароля, сохраняя при этом защиту подключения.
Решение
Начните с настройки открытого и закрытого ключей (см. раздел 17.3), а затем воспользуйтесь ssh-agent. Эта программа обрабатывает запросы на аутентификацию при подключении к различным системам через SSH. Пароль вводится только один раз, в начале сеанса SSH; после выхода из сеанса его потребуется ввести заново. ssh-agent
не позволяет запланировать пересылку данных через SSH — о том, как это делается, рассказано в разделе 17.8.
Прежде всего, запустите ssh-agent с указанием используемого командного процессора:
$ ssh-agent bash
После появления стандартного приглашения запустите утилиту ssh-add
, которая загружает все ключи из каталога ~/.ssh
:
$ ssh-add
Enter passphrase for /home/jenn/.ssh/id_rsa:
Identity added: /home/jenn/.ssh/id_rsa (/home/jenn/.ssh/id_rsa)
Enter passphrase for /home/jenn/.ssh/apache_key:
Identity added: /home/jenn/.ssh/id_rsa (/home/jenn/.ssh/apache_key)
Теперь вы сможете подключаться к любому хосту SSH без повторного ввода пароля:
jenn@windbag:$ ssh powerpc
Linux powerpc 2.4.21 #1 Sun Aug 3 20:15:59 PDT 2003 i686 GNU/Linux
Libranet GNU/Linux
Last login: Wed Feb 7 18:28:20 2004 from windbag.test.net
jenn@powerpc:~$
Чтобы завершить работу ssh-agent
, просто выйдите из командного процессора, запущенного через ssh-agent:
$ exit
Комментарий
Поскольку пароли и ключи ассоциируются с конкретным процессом Bash, при выходе из командного процессора ssh-agent они пропадают. Если запустить второй командный процессор для другой копии ssh-agent, пароль придётся вводить заново, даже если первый процесс остаётся активным.
Чтобы узнать, какие ключи использует ssh-agent, введите команду:
$ ssh-add -l
1024 65:91:77:71:24:66:46:ea:cb:00:fe:83:ad:b8:4a:34 /home/jenn/.ssh/id_rsa (RSA)
1024 da:f7:27:6a:37:4e:a5:bb:1d:00:c7:a8:e9:fe:23:d8 /home/jenn/.ssh/apache_key (RSA)
Чтобы команда сработала, необходимо вернуться к локальному командному процессору ssh-agent и не быть подключённым к удалённому хосту. При подключении работой терминала управляет удалённый хост, и вы получите сообщение об ошибке «Could not open a connection to your authentication agent».
Команда ssh-add
позволяет загружать конкретные ключи:
$ ssh-add /home/jenn/adminkeys/id_rsa_http
и удалять ключи из активного сеанса ssh-agent (при этом ключ не удаляется из системы):
$ ssh-add -d /home/jenn/.ssh/id_dsa
Identity removed: /home/jenn/.ssh/id_dsa (/home/jenn/.ssh/id_dsa.pub)
Следующая команда удаляет все ключи:
$ ssh-add -D
All identities removed.
Использование ssh-agent и ssh-add значительно облегчает процесс входа на удалённые серверы и позволяет безопасно хранить пароли в пределах сеанса. Это особенно полезно для администраторов, которые часто подключаются к разным серверам, так как сохраняет конфиденциальность ключей и избавляет от необходимости многократного ввода пароля. Также, ssh-agent поддерживает гибкость: ключи можно добавлять, удалять или использовать на определённых хостах.
См. также
ssh(1), ssh-add(1), ssh-agent(1).