Если вы применяете открытый ключ для аутентификации, необходимо принять меры для того, чтобы закрытый ключ не стал доступен посторонним. Если злоумышленник сможет получить ваш закрытый ключ, он сможет обращаться к серверу под вашим именем. В протоколе SSH ключ связывается с определенным IP-адресом, и регистрироваться с помощью открытого ключа можно только с одного компьютера, но тот, кто пытается проникнуть в систему, сумеет без труда обойти это ограничение (именно поэтому защита rlogind
Для того чтобы обеспечить 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
PubkeyAuthentication (версия 2), задаваемые в конфигурационном файле /etc/ssh/sshd_config.Заметьте, что пользоваться SSH-соединением можно, не настраивая программы для аутентификации с помощью открытого ключа. Подобная аутентификация лишь исключает необходимость ввода пароля либо обеспечивает дополнительную степень защиты за счет использования фразы пароля.
ssh-agentSSH-аутентификацию можно также организовать с помощью инструмента, который называется 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-agent и получает значения ключей. Доступ к ключам имеют только программы, являющиеся дочерними по отношению к ssh-agent, но если ssh-agent запускает новую оболочку, то все программы, вызванные из этой оболочки, в том числе ssh, также становятся дочерними для ssh-agent.