Skip to main content

Настройка подключения SSH по сертификатам

Шаг 1. Генерация приватного и публичного ключа

Для генерации приватного и публичного ключа выполним команду:

ssh-keygen -a 1000 -b 4096 -o -t rsa

Далее необходимо:
1.    Ввести путь, куда будут сохранены ключи – по-умолчанию это ~/.ssh/id_rsa 
2.    Ввести парольную фразу для расшифровки приватного ключа. Если оставить поле пустым, при его использовании пароль не будет запрашиваться
Так же важно добавить публичный ключ в один из конфигурационных файлов – authorized_keys:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Пояснение
SSH-ключ будет в файле id_rsa, в файле id_rsa.pub будет связанным с ним публичный ключ. Файл authorized_keys будет хранить в себе список из отпечатков (публичный ключей) для каждого приватного ключа, доступного для этого пользователя.

Шаг 2. Настройка SSHD

Изменим файл /etc/ssh/sshd_config, задав (изменив) ряд опций. Если закрытый ключ генерировался для любых пользователей, но root не должен иметь права входить на сервер:

# Запрещаем вход пользователю root
PermitRootLogin no
# Разрешаем использование ключей
PubkeyAuthentication yes
# Запрещаем использование паролей
PasswordAuthentication no
# Запрещаем аутентификацию пользователей через модуль PAM 
# (встроенная аутентификация в Linux)
UsePAM no

Если закрытый ключ генерировался для пользователя root, изменяем всего 1 параметр:

# Разрешаем вход пользователю root
PermitRootLogin yes

По желанию, можно разрешить вход каким-то конкретным пользователям:

AllowUsers root

Шаг 3. Перезапуск демона SSH и проверка работоспособности

Для применения изменений выполним перезапуск сервера SSH:

systemctl restart ssh

Далее, попробуем войти на этот же сервер с нашим закрытым ключом:

ssh username@localhost -i /путь/к/приватному/ключу

Если ошибок в конфигурации нет, SSH предложит нам добавить хост в список доверенных (только при первом входе) и разрешит вход. Если на этапе задания пароля для приватного ключа вы установили пароль, он будет запрошен у вас для дешифровки.  

Примечание

Возможно, понадобится отредактировать файлы в Include-директории. Обычно, это:

/etc/ssh/sshd_config.d/*.conf

В этих файлах хранятся настройки, которые могут перезаписать значения из основного конфигурационного файла SSHD, поэтому допустимо такое решение:

rm -f /etc/ssh/sshd_config.d/*.conf

                                                                                                      ВАЖНО!                                                                                                    
Эта команда удалит все содержимое с расширением *.conf из директории /etc/ssh/sshd_config.d !!!