С этого момента вы можете устанавливать соединение с сервером, используя протокол 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
.
Если вам необходимо установить одно соединение, данный подход не оправдывает себя, так как перед вызовом
ssh
вам необходимо запустить
ssh-agent
и включить ключи в кэш посредством
ssh-add
, кроме того, придется один раз ввести фразу пароля. Применение
ssh-agent
позволит сэкономить время в том случае, если вы регистрируетесь на нескольких компьютерах с помощью одного ключа либо если вам часто приходится повторно регистрироваться на одном компьютере. Существует несколько способов, позволяющих упростить работу с
ssh-agent
.
• Вы можете внести изменения в файл
/etc/passwd
так, чтобы оболочка вызывалась посредством
ssh-agent
. Например, если в
/etc/passwd
указана оболочка
/bin/bash
, вы можете задать в соответствующем поле
/usr/bin/ssh-agent/bin/bash
. (При необходимости вы можете изменить путь к
ssh-agent
или использовать другую оболочку.) После этого вам не придется вручную задавать команду
ssh-agent /bin/bash
; достаточно будет зарегистрироваться в системе, ввести
ssh-add ~/.ssh/id_rsa
и использовать
ssh
для регистрации на удаленном компьютере. Данный подход применим только в том случае, когда регистрация в системе осуществляется в текстовом режиме. Если вы используете графическую среду, то для каждого нового окна xterm будет создаваться новое окружение
ssh-agent
, что приведет к непроизводительному расходу ресурсов.
• Если вы регистрируетесь в текстовом режиме и запускаете X Window с помощью
startx
, вы можете вместо этой команды задать
ssh-agent startx
. При этом
ssh-agent
становится родительской программой по отношению ко всем процессам X Window и может предоставлять им информацию о ключах.
• Если вы используете инструменты регистрации с графическим интерфейсом, вам надо сохранить файл
.xsession
(или другой файл аналогичного назначения) под именем
.xsession-nosshagent
, а затем создать новый файл .xsession, включив в него единственную команду
ssh-agent ~/.xsession-nosshagent
. В результате
ssh-agent
станет родительской программой для всех процессов X Window, и вам не придется повторно вводить ключи, добавленные в кэш программой
ssh-add
, даже если вы будете запускать клиент SSH из различных окон.
После запуска
ssh-agent
и указания ключей вы можете просмотреть введенные ключи, задав команду
ssh-add -1
. Для удаления ключей надо использовать команду
ssh-add -d
. Если после вызова
ssh-add -d
вы захотите установить SSH-соединение, вам придется повторно ввести ключ (или указать пароль).
Одно из преимуществ использования
ssh-agent
состоит в том, что для взаимодействия с различными серверами SSH вам надо лишь скопировать открытый ключ на каждый сервер. Устанавливая соединение с несколькими серверами, вы можете использовать один и тот же открытый ключ и программу
ssh-agent
. Если вы предпочитаете применять различные ключи для работы с разными серверами, вам придется хранить ключи в отдельных файлах и при загрузке каждого из них вводить соответствующую фразу пароля. Если вам понадобится установить соединение с компьютером, на котором отсутствует открытый ключ, вам придется ввести пароль так же, как вы это делаете при обычном обращении без использования