Доступ к серверу по SSH с использованием ключа.

ssh-key Безопасность

Для повышения безопасности при доступе к удалённому серверу по SSH рекомендуется выпустить пару ключей (открытый и закрытый) и настроить сервер SSH и клиент для их использования.

В целом задачу можно разбить на следующие шаги:

  • Генерация пары ключей.
  • Копирование открытого ключа на удалённый сервер.
  • Настройка удалённого сервера для использования ключей.
  • Настройка локального клиента для использования ключей.
  • Отключение возможности удалённого входа без использования ключей.

Пойдём по порядку.

Генерация пары ключей.

Интерфейс PuTTYgen

Генерировать ключевую пару (открытый и закрытый ключи), а также подключаться к удалённому серверу будем с рабочей станции Windows 10. Для этого нам надо установить в системе SSH-клиент PuTTY с официального сайта (https://www.putty.org/).

Установка PuTTY тривиальна: Далее – далее – … – Готово.

В каталоге установки PuTTY находим утилиту PuTTYgen.exe и запускаем.
В открывшемся окне нажимаем кнопку [Generate] и активно двигаем мышкой в окне программы, наблюдая за шкалой прогресса.
После того, как ключ будет сгенерирован в поля [Key passphrase] и [Confirm passphrase] вводим пароль для ключа и его подтверждение. Если оставить пароль пустым, то работать, конечно, будет намного удобнее… Но в случае компрометации ключа злоумышленник легко получит доступ к вашему серверу.
Нажимаем кнопку [Save public key] для сохранения открытого ключа (к примеру, в файл c:\TEMP\keys\id_rsa.pub). И кнопку [Save private key] для сохранения закрытого ключа (к примеру, в файл c:\TEMP\keys\id_rsa.pri).

Копирование открытого ключа на удалённый сервер.

Скопировать на сервер необходимо открытый ключ в файл .ssh/authorized_keys в профиле пользователя.
Для меня самым простым способом оказалось использовать Командную строку Windows (cmd), в которой необходимо ввести команду:

type c:\TEMP\keys\id_rsa.pub | plink.exe –ssh username@host –pw user_password “cat >> .ssh/authorized_keys”

Формат ключа, генерируемый PuTTYgen не принимается SSH-сервером. Если оставить запись всё как есть, то в дальнейшем, при подключении к серверу получим ошибку: Server refused our key.
Для исправления этого, нам необходимо подключиться к серверу по SSH, пока по имени и паролю, и отредактировать файл .ssh/authorized_keys удалив «—- BEGIN SSH2 PUBLIC KEY —-», «Comment: …», «—- END SSH2 PUBLIC KEY —-» и лишние переносы строк. Можно воспользоваться редактором nano.

Файл authorized_keys

В итоге каждый ключ в файле .ssh/authorized_keys должен представлять собой одну строку вида:

ssh-rsa {открытый ключ}

Настройка удалённого сервера SSH c использованием ключа.

Приступаем к настройке ssh-сервера. Открываем для редактирования файл sshd_config:

sudo nano /etc/ssh/sshd_config

Находимо параметру PubkeyAuthentication и устанавливаем значение yes.

Находим параметр AuthorizedKeysFile и устанавливаем значение %h/.ssh/authorized_keys.

Файл sshd_config

Настраиваем права доступа на каталог .ssh и файл authorized_keys:

chmod 700 ~/.ssh
chmod 700 ~/.ssh/authorized_keys
chown username:usergroup ~/.ssh –R

Перезапускаем сервер ssh:

sudo service ssh restart

Настройка локального клиента для использования ключей.

Открываем ssh-клиент PuTTY.

Интерфейс PuTTY

На закладке Session в окне [Host Name (or IP address)] вводим имя удалённого сервера или его IP-адрес.
На закладке Connection – SSH – Auth – Credential для параметра [Private key file for authentication:] нажимаем кнопку [Browse…] и выбираем файл с закрытым ключом, сохранённый на первом этапе (c:\TEMP\keys\id_rsa.pri).
Можно вернуться на закладку Session в окне [Saved Sessions] ввести удобное имя для подключения и нажать кнопку [Save], чтобы каждый раз не выбирать закрытый ключ и не вводить адрес сервера вручную.
Внизу окна нажимаем кнопку [Open], вводим пароль для закрытого ключа и проверяем, что произошло подключение с использованием ключа.

Доступ к серверу по SSH с использованием ключа получен, ошибок нет. Остаётся только отключить возможность использования входа по паролю.

Отключение возможности удалённого входа без использования ключей.

После успешного подключения к серверу с использованием ключей, необходимо отключить возможность подключения по ssh по паролю.
Для этого опять открываем на редактирование файл sshd_config:

sudo nano /etc/ssh/sshd_config

Находим параметр PasswordAuthentication и устанавливаем ему значение no.

Файл sshd_config

Перезапускаем сервер ssh:

sudo service ssh restart

Получаем удовольствие от повышения уровня защищённости.

Оцените статью
BLOGCOMP