SSH. Аутентификация по ключу

Опубликовано nekit - сб, 24/09/2011 - 14:57

Практически большую часть времени приходится удаленно администрировать сервера. Основным средством для удаленного администрирования (точнее удаленного доступа к консоли) является протокол SSH, реализация которого присутствует во FreeBSD в виде свободного пакета — OpenSSH. Естественно, что для входа на сервер посредством SSH необходимо пройти аутентификацию. Возможно несколько способов аутентификации, но в статье пойдет речь всего лишь об одном — аутентификацию по ключу. Данный способ хорош тем, что лишает смысла любые атаки с перебором паролей, но есть один, хоть и не большой, но минус — ключ придется всегда носить с собой.

Итак, для того, чтобы OpenSSH стал пускать на сервер по ключам, необходимо в конфиге /etc/ssh/sshd_config привести следующие параметры к такому виду:

  1. # Разрешает аутентификацию по ключу для первой и второй версии протокола
  2. RSAAuthentication yes
  3. PubkeyAuthentication yes
  4. # Файл, в котором находятся разрешенные (открытые) ключи
  5. AuthorizedKeysFile  .ssh/authorized_keys
Если в остальных методах аутентификации у вас нужды нет, то отключите их. Осталось дело за малым, сгенерировать пару ключей (открытый и закрытый), которые будут использоваться для входа на сервер. Открытый ключ размещается на необходимом сервере, а закрытый ключ находится только у вас и будет использоваться для аутентификации. Для генерации ключей предназначена утилита ssh-keygen. Вот список некоторых полезных параметров:
  • -b — битность ключа;
  • -f — имя файла, в который будет записан ключ (если не указывать, то открытый и закрытый ключи будут находиться в директории ~/.ssh);
  • -t — тип ключа (rsa, dsa и т.п.);
Таким образом, чтобы сгенерировать пару ключей, необходимо выполнить такую команду:
  1. $ ssh-keygen -t rsa -b 2048
В директории ~/.ssh должно появиться два файла id_rsa (закрытый ключ) и id_rsa.pub (открытый ключ). Закрытый ключ вы носите везде с собой, а открытый нужно добавить в файл .ssh/authorized_keys на удаленный сервер пользователю, под которым будет осуществляться вход.
  1. $ cat id_rsa.pub >> ~user/.ssh/authorized_keys
Также необходимо задать правильные права доступа на нужные папки и файлы (если этого не было сделано ранее):
  1. $ chmod 700 ~user/.ssh
  2. $ chmod 600 ~user/.ssh/authorized_keys
Вот и все, теперь можно заходить на удаленный сервер по ключу. Чтобы использовать сгенерированный с помощью пакета OpenSSH закрытый ключ в putty, нужно конвертировать его в собственный формат putty с помощью утилиты puttygen, которую можно найти на официальном сайте клиента putty. Для примера приведу скрин процесса конвертации закрытого ключа:

Процесс конвертации приватного ключа
Полученный файл нужно указывать в putty: Connection -> SSH -> Auth в поле "Private key file for authentication". На этом все, пожелания/замечания прошу оставлять в комментариях, а вопросы задавать на форуме.

пн, 26/01/2015 - 21:00

Добавить комментарий

Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.