3. Скопируйте файл ~/id_rsa.pubв свой рабочий каталог на сервере. (Этот файл содержит открытый ключ. Его имя отличается от имени файла, которое вы задали при вызове предыдущей команды, суффиксом .pub.) Для копирования можно использовать команду scp.
$ scp ~/.ssh/id_rsa.pub server:.ssh/id_rsa.client
4. Зарегистрируйтесь на сервере. Для этого вы можете использовать ssh, но вам придется ввести пароль.
5. Сделайте каталог ~/.sshтекущим. Если вы выведете список файлов, то увидите, что в этом каталоге присутствует файл id_rsa.client.
6. Добавьте открытый ключ в файл authorized_keys2. Это можно сделать с помощью следующей команды:
$ cat id_rsa.client >> authorized_keys2
С этого момента вы можете устанавливать соединение с сервером, используя протокол SSH 2. Если вы не указали фразу пароля, при регистрации вам не придется вводить какие-либо идентификационные данные. Опция -2указывает SSH-клиенту на то, что взаимодействие должно осуществляться с использованием версии 2 протокола SSH.
$ ssh -2 server
Внимание
Если вы применяете открытый ключ для аутентификации, необходимо принять меры для того, чтобы закрытый ключ не стал доступен посторонним. Если злоумышленник сможет получить ваш закрытый ключ, он сможет обращаться к серверу под вашим именем. В протоколе 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.
Читать дальше