|
С демона по нитке Andrushock Xakep, номер #051, стр. 051-076-5 В алгоритме шифрования с открытым ключом для шифрации и дешифрации данных применяется асимметричная пара ключей, состоящая из публичного и приватного ключей. Первый из них используется для шифрования, и его можно свободно распространять среди абонентов даже по незащищенным каналам. Второй ключ, отвечающий за дешифровку, необходимо держать в секрете. В настоящее время одним из самых популярных алгоритмов шифрования открытым ключом является алгоритм RSA http://www.rsasecurity.com/, предложенный еще в 1977 году американскими учеными Ronald Rivest, Adi Shamir и Leonard Adleman.
Для работы по протоколу SSH версии 2 следует убедиться, что на сервере в файле sshd_config присутствуют следующие строки: Protocol 2,1 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys А в ssh_config (на сервере), либо в файле ~/.ssh/config на клиентской машине имеются такие настройки: Protocol 2,1 IdentityFile ~/.ssh/id_rsa Теперь сгенерируем пару ключей RSA протокола SSH2 без указания парольной фразы: $ ssh-keygen -t rsa -N '' -C 'Shell account' -f ~/.ssh/id_rsa Скопируем полученный публичный ключ на удаленную систему: $ scp ~/.ssh/id_rsa.pub my.shellbox.ru:~/.ssh/authorized_keys Если файл authorized_keys уже существует, то просто добавим в него новый ключ: $ scp ~/.ssh/id_rsa.pub my.shellbox.ru:~/ $ ssh my.shellbox.ru 'cat ~/id_rsa.pub >> ~/.ssh/authorized_keys' С этого момента, для того, чтобы войти на my.shellbox.ru достаточно набрать: $ ssh my.shellbox.ru Работа с ключами DSA протокола SSH версии 2 полностью аналогична описанной выше схеме. Для использования ключей RSA протокола SSH1 необходимо убедиться, что обе стороны поддерживают RSA1 аутентификацию. На сервере: Protocol 2,1 RSAAuthentication yes На стороне клиента: Protocol 2,1 RSAAuthentication yes IdentityFile ~/.ssh/identity Сгенерируем пару ключей: $ ssh-keygen -t rsa1 Скопируем открытую часть из пары ключей на удаленную систему: $ scp ~/.ssh/identity.pub my.shellbox.ru:~/.ssh/authorized_keys Насильно заставим клиента ssh использовать первый протокол SSH: $ ssh -1 my.shellbox.ru Конечно, при использовании этого бесспорно удобного метода существует немалый риск, так как злоумышленник, получивший доступ к секретному ключу на клиентской машине, автоматически становится обладателем шелла на удаленной системе, где применяется публичный ключ из этой пары. Альтернативным и более безопасным способом беспарольной аутентификации является использование демона-посредника ssh-agent, предназначенного для хранения парольной фразы секретного ключа. Сгенерируем пару ключей RSA, введем и подтвердим парольную фразу: $ ssh-keygen -t rsa Запустим программу ssh-agent так, чтобы его процесс породил еще один командный интерпретатор, но уже с измененными переменными окружения: $ eval `ssh-agent` И добавим в базу защищенного агента наш приватный ключ: $ ssh-add ~/.ssh/id_rsa На этом настройка закончена. Теперь можно установить соединение с удаленным хостом, не вводя ни пароль пользователя, ни парольную фразу для пары ключей: $ ssh my.shellbox.ru |