Если вы применяете открытый ключ для аутентификации, необходимо принять меры для того, чтобы закрытый ключ не стал доступен посторонним. Если злоумышленник сможет получить ваш закрытый ключ, он сможет обращаться к серверу под вашим именем. В протоколе SSH ключ связывается с определенным IP-адресом, и регистрироваться с помощью открытого ключа можно только с одного компьютера, но тот, кто пытается проникнуть в систему, сумеет без труда обойти это ограничение (именно поэтому защита rlogind
не соответствует современным требованиям). Применение фразы пароля повысит уровень защиты, так как, чтобы проникнуть в систему, надо не только получить в свое распоряжение открытый ключ, но и узнать нужную фразу. Однако, если при каждой регистрации на сервере пользователю придется вводить идентификационные данные (в частности, фразу пароля), работа посредством протокола SSH будет гораздо менее удобной.
Для того чтобы обеспечить RSA-аутентификацию при использовании протокола SSH 1, ваши действия должны несколько отличаться от приведенных выше. Новая процедура и процедуры, описанные ранее, имеют следующие отличия.
• В п. 2 вместо -t rsa -f ~/.ssh/id_rsa
следует указать -t rsa1 -f ~/.ssh/identity
. При этом будет сгенерирована пара ключей RSA по соглашениям версии 1. Аналогичным образом надо изменить имена файлов на других стадиях процедуры.
• В п. 6 открытый ключ из identity.pub
копируется не в authorized_keys2
, а в файл authorized_keys
.
• При установлении соединения, вызывая ssh, не надо указывать опцию -2
.
Обе описанные здесь процедуры предполагают, что сервер сконфигурирован для выполнения аутентификации с помощью открытого ключа. Как вы уже знаете, для этой цели используются опции RSAAutentification
(версия 1) и PubkeyAuthentication
(версия 2), задаваемые в конфигурационном файле /etc/ssh/sshd_config
.
Заметьте, что пользоваться SSH-соединением можно, не настраивая программы для аутентификации с помощью открытого ключа. Подобная аутентификация лишь исключает необходимость ввода пароля либо обеспечивает дополнительную степень защиты за счет использования фразы пароля.
ssh-agent
SSH-аутентификацию можно также организовать с помощью инструмента, который называется ssh-agent
. Программа ssh-agent
осуществляет управление SSH-ключами так, что фразу пароля приходится вводить лишь один раз. Для того чтобы работа с ssh-agent
стала возможной, выполните следующие действия.
• Создайте закрытый и открытый ключи, выполнив описанную выше процедуру, и скопируйте открытый ключ в свой рабочий каталог на сервере SSH. При вызове ssh-keygen
не следует задавать опцию -N ''
, чтобы закрытый ключ был защищен фразой пароля.
• На компьютере, на котором выполняется клиентская программа SSH, задайте команду ssh-agent /bin/bash
, и она запустит на выполнение программу ssh-agent
и новую оболочку Bash. В результате ssh-agent
будет контролировать все процессы, порожденные новой оболочкой. (При необходимости вы можете использовать вместо Bash другую оболочку.)
• Чтобы добавить RSA-ключ SSH к кэшу ключей ssh-agent
, вызовите команду ssh-add ~/.ssh/id_rsa
. (При использовании версии 1 SSH задавать ~/.ssh/id_rsa
не следует.) Если ключ защищен фразой пароля, ssh-add
запросит ее.
С этого момента вы можете обращаться к серверу SSH с помощью SSH-клиента; причем вам не придется вводить ни пароль, ни фразу пароля. Программа ssh-agent
хранит ключи в памяти и устанавливает переменные окружения так, что клиент SSH взаимодействует с ssh-agent
и получает значения ключей. Доступ к ключам имеют только программы, являющиеся дочерними по отношению к ssh-agent
, но если ssh-agent
запускает новую оболочку, то все программы, вызванные из этой оболочки, в том числе ssh
, также становятся дочерними для ssh-agent
.