Обучение

Обучение

Life-hack


6) Коротко о беспарольном доступе

Думаю, все уже знают что авторизация по паролю это не про нас. Но на всякий случай впихну сюда краткую инструкцию по настройке аутентификации по ключу RSA:


1. На клиентских машинах генерируем пользователю свой ключ RSA:


client1# ssh-keygen -t rsa


По-умолчанию приватный ключ сохраняется в ~/.ssh/id_rsa, а открытый — в ~/.ssh/id_rsa.pub. Приватный ключ храните как зеницу ока и никому не давайте, никуда не копируйте.

При создании ключа можно задать пароль (passphrase), которым ключ будет зашифрован.


2. Клиентские открытые ключи нужно сохранить на ssh-сервере в файле ~/.ssh/authorized_keys (~ это домашняя директория того пользователя, которым будете логиниться), каждый на отдельной строке. Для того чтобы это не делать вручную, на каждом клиенте можно воспользоваться командой:


ssh-copy-id user@sshserver


Где user — имя пользователя на сервере, sshserver — имя или IP-адрес ssh-сервера.

Права на файл ~/.ssh/authorized_keys

UPD от sabio: В случае ручного создания файла ~/.ssh/authorized_keys на ssh-сервере необходимо задать следующие права:

chmod 0700 ~/.ssh

chmod 0600 ~/.ssh/authorized_keys



3. Проверьте, что можете зайти на сервер по ключу, без ввода пароля (не путать с passphrase):

ssh user@sshserver

Рекомендую не закрывать хотя бы одну активную ssh-сессию с сервером до тех пор, пока окончательно не закончите настройку и не убедитесь что все работает.


4. Отключите на SSH-сервере возможность входа по паролю в файле /etc/ssh/sshd_config:


PasswordAuthentication no


Возможность входа по открытому ключу обычно уже включена по-умолчанию:


PubkeyAuthentication yes


Я обычно также отключаю две следующие опции:


GSSAPIAuthentication no

UseDNS no


В некоторых случаях это позволяет ускорить процесс соединения (например, когда на сервере нет доступа в Интернет).


5. Перезапустите sshd:

service sshd restart

или

/etc/init.d/ssh restart


В случае ошибок полезно бывает смотреть лог /var/log/secure либо использовать опции -v, -vv или -vvv для вывода детального лога соединения:

ssh -vvv user@sshserver