SSH без пароля

Опубликовано admin в Ср, 20/05/2009 - 10:11

ssh (_http://ru.wikipedia.org/wiki/Ssh) (Secure Shell) — сетевой протокол, позволяющий удаленное управление компьютером и передачу файлов. По сути, протокол является "защищённой" версией RSH, использующей алгоритмы RSA (_http://ru.wikipedia.org/wiki/RSA) как для идентификация пользователя, так и передачи данных. В данной заметке описывается, каким образом "подружить" две машины, чтобы при попытке входа по с первой из них (будем условно называть её "клиент") на вторую ("сервер" - опять-таки, условно) по протоколу ssh отпала необходмость в вводе пароля (такая задача может возникнуть, например, во время настройки систем резервного копирования, публикации файлов и т.п.). Статья ориентирована на новичка и принадлежит классу RTFM (_http://ru.wikipedia.org/wiki/RTFM) :-)

Прежде всего, необходимо усвоить, что основой использования ssh без ввода пароля служит идентификация пользователя на основе публичного ключа. Вам необходимо создать пару ключей - публичный/частный (public/private). Покажем, как это делается на примере ssh версии 2 (отметим, что версия 1 является устаревшей, использовать её не рекомендуется).

Шаг 1. Создаём на "клиенте" пару ключей (публичный/частный), используя утилиту ssh-keygen:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ns/.ssh/id_rsa):
Created directory '/home/ns/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ns/.ssh/id_rsa.
Your public key has been saved in /home/ns/.ssh/id_rsa.pub.
The key fingerprint is:
18:f7:a3:78:ec:9e:36:b4:95:c0:5a:36:c4:b6:88:8b ns@games.zunet.ru

Здесь мы используем опцию -t, чтобы указать на использование RSA (_http://ru.wikipedia.org/wiki/RSA) для создания ключей. Ввод некоторого (произвольного) выражения в качестве passphrase настоятельно рекомендуется. После выполнения данной операции получаем два файла в поддиректории .ssh домашней директории: id_rsa и id_rsa.pub

Шаг 2. Копируем файл id_rsa.pub в директорию .ssh/ на "сервере" (напомним, так мы договорились называть удалённую машину, доступ по протоколу ssh к которой необходимо осуществлять без пароля), под именем authorized_keys2:

$ scp /home/ns/.ssh/id_rsa.pub ns@vps:/home/ns/.ssh/authorized_keys2
ns@vps's password:
id_rsa.pub                                    100%  227     0.2KB/s   00:00

Таким образом, мы указали демону sshd (программа-демон (_http://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BC%D0%BE%D0%BD_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%29), выполняющая роль SSH-сервера) на "сервере", что для шифрования данных при соединении с нашим "клиентом" необходимо использовать указанный публичный ключ и, кроме того, данный ключ создан для протокола версии 2.

Шаг 3. Часть настройки, касающаяся публичного ключа, можно считать завершённой. Теперь "сервер" не будет запрашивать пароль при попытке установления соединения по ssh с данной конкретной машины ("клиента") от данного пользователя (конечно же, в других случаях, пароль будет требоваться, как и должно быть).

( categories: )