Для того чтобы обеспечить 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
. Если вы предпочитаете применять различные ключи для работы с разными серверами, вам придется хранить ключи в отдельных файлах и при загрузке каждого из них вводить соответствующую фразу пароля. Если вам понадобится установить соединение с компьютером, на котором отсутствует открытый ключ, вам придется ввести пароль так же, как вы это делаете при обычном обращении без использования
ssh-agent
.
Резюме
Сервер удаленной регистрации позволяет пользователям запускать программы и вызывать команды из оболочки во время работы на удаленном компьютере. Такой режим работы очень удобен для пользователя, но, поддерживая средства удаленной регистрации, приходится принимать дополнительные меры по обеспечению безопасности системы.
Наиболее часто в системе Linux используются серверы удаленной регистрации
rlogind
, Telnet и SSH. Из них наилучшую защиту обеспечивают средства SSH, поэтому именно их желательно использовать для установления соединения с Internet. (Существуют также разновидности Telnet, реализующие повышенный уровень защиты, но они применяются чрезвычайно редко.) Использование
rlogind
и Telnet оправдано в небольших локальных сетях, полностью контролируемых системными администраторами. В средах, в которых могут предприниматься попытки взлома систем, особенно в Internet, применять эти серверы не рекомендуется, так как их средства защиты не отвечают современным требованиям. Все три сервера достаточно просты в настройке. Если конфигурация, предложенная по умолчанию, не устраивает вас, вы можете без труда установить нужные параметры, изменяя значения опций. В особенности это относится к серверу SSH, в котором реализовано несколько механизмов аутентификации.