В данном руководстве описывается процесс настройки SSH-аутентификации с использованием публичного ключа на настольной системе с CentOS/RHEL. Существует два основных метода подтверждения личности пользователя при подключении к серверу OpenSSH: аутентификация с помощью пароля и аутентификация с использованием публичного ключа. Второй метод также называют беспарольным входом по SSH, так как для него не требуется вводить пароль.
Содержание статьи
- 1 Создайте пару SSH-ключей (публичный и приватный) на настольном ПК с CentOS/RHEL.
- 2 Передайте свой публичный SSH ключ на удалённый сервер под управлением Linux.
- 3 Принудительное использование аутентификации по SSH с применением публичного ключа на удалённом сервере.
- 4 Создание резервной копии ваших ключей (публичного и приватного).
- 5 Включить возможность аутентификации с использованием пароля только с доверенных IP-адресов.
- 6 Смена пароля для приватного ключа.
- 7 Заключение
Создайте пару SSH-ключей (публичный и приватный) на настольном ПК с CentOS/RHEL.
На настольном компьютере с CentOS/RHEL (а не на сервере) выполните следующую команду в терминальном окне.
ssh-keygen - t rsa - b 4096
- Команда с параметром — t указывает на тип. Она создает пару ключей в формате RSA, который является стандартным типом по умолчанию.
- -b указывает на количество бит. Стандартная длина ключа составляет 3072 бита, но для повышения безопасности мы применяем ключ размером 4096 бит.
Если вам зададут вопрос о том, в какой файл сохранить ключ, просто нажмите Enter, чтобы выбрать файл по умолчанию. Затем создайте надежную парольную фразу, состоящую не менее чем из 20 символов. Эта парольная фраза будет использоваться для шифрования вашего приватного ключа.
- Приватный ключ (не передавайте его никому) будет храниться в файле. ssh/id_rsa, который расположен в вашем домашнем каталоге.
- Публичный ключ будет размещен в файле. ssh/id_rsa. pub.

Из изображения randomart можно определить длину ключа (RSA 4096). Теперь выполните следующую команду.
file ~/.ssh/id_rsa
Вы должны получить следующий результат:
/home/username/.ssh/id_rsa: OpenSSH private key
Ошибка «No such file or directory» указывает на отсутствие пары SSH-ключей. Для их создания выполните команду ssh-keygen — t rsa — b 4096.
Передайте свой публичный SSH ключ на удалённый сервер под управлением Linux.
Удаленный сервер может функционировать на любом дистрибутиве Linux, таком как Debian, Ubuntu, RHEL, CentOS и других. Если он поддерживает сервер OpenSSH, вы можете применить следующий способ.
Для этого достаточно использовать команду ssh-copy-id, которая является частью пакета openssh-clients.
ssh-copy-id remote-user@server-ip
Введите пароль для удаленного пользователя.

Публичный ключ будет сохранен в файле. ssh/authorized_keys в домашней директории удаленного пользователя. Теперь можно установить SSH-соединение с удаленным сервером.
ssh remote-user@server-ip
На этот раз вам необходимо ввести пароль вашего RSA ключа для разблокировки закрытого ключа. Вы также можете настроить автоматическую разблокировку при входе, чтобы в дальнейшем не вводить пароль.

После ввода верной фразы-пароля вы получили доступ к удалённому серверу на базе Linux. Теперь можете выйти из этого сервера.
exit
Снова подключитесь к удалённому серверу через SSH:
ssh remote-user@server-ip
На этот раз вы получили автоматический доступ к удалённому серверу, даже не вводя пароль или фразу-пароль. Кроме того, для передачи файлов с помощью команды scp вам также не потребуется вводить пароль или фразу-пароль. Эта команда является частью пакета openssh-clients, который по умолчанию установлен на настольных версиях CentOS/RHEL.
Принудительное использование аутентификации по SSH с применением публичного ключа на удалённом сервере.
Хотя по умолчанию для доступа к вашему серверу используется SSH-ключ, вы все равно имеете возможность входить с помощью пароля с другого устройства. Чтобы предотвратить попытки хакеров осуществить атаки методом подбора, разумно отключить аутентификацию по паролю в OpenSSH.
Для деактивации аутентификации с использованием пароля необходимо внести изменения в файл /etc/ssh/sshd_config на удалённом сервере.
sudo nano /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no
После этого найдите параметр ChallengeResponseAuthentication. Убедитесь, что его значение установлено на no, как указано ниже. Если оно равно yes, вы все равно сможете войти, используя пароль.
ChallengeResponseAuthentication no
Сохраните изменения в файле и перезапустите SSH-сервис.
sudo systemctl restart sshd
Если у вас отсутствует нужный приватный ключ в папке,~Если вы попытаетесь подключиться к своему удалённому серверу по SSH, то можете столкнуться со следующей ошибкой в директории /.ssh.
Permission denied (publickey).
Это означает, что удалённый сервер допускает подключение по SSH исключительно с использованием SSH-ключей и не позволяет аутентификацию через пароль. Учтите, что если вы установите параметр PasswordAuthentication в значение no, а ChallengeResponseAuthentication в yes, вы всё равно сможете войти с помощью пароля. Чтобы полностью отключить возможность входа по паролю, оба этих параметра должны быть установлены в no.
Создание резервной копии ваших ключей (публичного и приватного).
После отключения аутентификации по паролю для SSH, крайне важно сохранить резервную копию ваших SSH-ключей. В случае их утраты вы можете оказаться заблокированными на сервере. Рекомендуется сделать копию вашей пары ключей (публичного и приватного) и сохранить её в безопасном месте, например, на USB-накопителе.
cp ~/.ssh/id_rsa* /path/to/safe/location/
Вы можете перенести пару SSH-ключей на новый компьютер с Linux и подключиться к своему серверу с их помощью. После копирования ключей на новый компьютер переместите их в папку. ssh/ для нового пользователя.
mv id_rsa* ~/.ssh/
Необходимо передать права на пару ключей новому пользователю на новом компьютере.
sudo chown new-user:new-user ~/.ssh/id_rsa*
Теперь у вас есть возможность входить на удалённый сервер с нового компьютера, используя SSH-ключи.
Вы можете сохранить свои ключи в отдельной папке, после чего заархивировать её с использованием шифрования и загрузить в облачное хранилище, такое как NextCloud.
Включить возможность аутентификации с использованием пароля только с доверенных IP-адресов.
Рекомендуется настроить аутентификацию по паролю с ваших собственных IP-адресов, чтобы в случае утраты SSH-ключа у вас оставалась возможность доступа к серверу через SSH.
Совет: В случае отсутствия статического IP-адреса вы можете организовать собственный VPN-сервер в центре обработки данных.
Отредактируйте файл конфигурации SSH-демона на удалённом сервере.
sudo nano /etc/ssh/sshd_config
В конце файла добавьте эти строки, заменив 10.0.0.2 на ваш личный IP-адрес.
Match Address 10.0.0.2 PasswordAuthentication yes
Если клиент осуществляет подключение с IP-адреса 192.168.0.2, то разрешена аутентификация с использованием пароля. Можно добавить и другие IP-адреса.
Совпадение адреса 10.0.0.2 10.0.0.3 PasswordAuthentication yes
Или применяйте нотацию CIDR следующим образом:
Совпадение адреса 10.0.0.0/24 PasswordAuthentication yes
Сохраните изменения в файле и закройте его. Затем перезапустите сервер OpenSSH.
sudo systemctl restart sshd
Смена пароля для приватного ключа.
Если вам потребуется обновить пароль вашего закрытого ключа, вы можете воспользоваться следующей командой:
ssh-keygen - f ~/.ssh/id_rsa - p
Пожалуйста, укажите ваш предыдущий пароль, а затем введите новый.
Заключение
Надеюсь, данный гид оказался полезным для настройки аутентификации с использованием публичного ключа SSH на вашем рабочем столе CentOS/RHEL. Возможно, вам также будет интересно ознакомиться с:
- Три метода применения SSH на Windows для доступа к серверу Linux.
Если вам понравился этот пост, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать дополнительные советы и рекомендации.

