1.8.9 Аутентификация по протоколу SSH с использованием RSA-ключа
Клиент SSH. Генерация RSA-ключа
Клиент SSH. Передача открытой части ключа на сервер
Клиент SSH. Установка ранее сгенерированного ключа
Сервер SSH. Отключение аутентификации по паролю
Окружение
- Версия РЕД ОС: 7.3, 8
- Конфигурация: Рабочая станция
- Версия ПО: openssh-9.3p1-5
Установка и настройка утилиты openssh подробно описаны нашей статье «Работа с клиентом и сервером SSH».
Использование ключа при аутентификации позволяет не только отказаться от обязательного ввода пароля при установке соединения, но и повысить защищенность соединения, автоматизировать процессы. Такие утилиты и протоколы как scp, rsync, sftp, которые при аутентификации ранее требовали ввода пароля, используя ключ, могут функционировать без участия пользователя.
Ключ состоит из двух частей – публичной и приватной. Публичная часть ключа может распространятся по открытым каналам без угрозы для безопасности соединения. Приватная часть должна быть защищена от несанкционированного доступа. В случае передачи приватной части ключа по незащищенным каналам или возможности несанкционированного доступа предусмотрена возможность парольной защиты ключа.
Общий принцип аутентификации с использованием ключа заключается в том, что при инициализации клиентом сеанса связи сервер шифрует открытой частью ключа случайное число и передает его клиенту. Если клиент обладает приватной частью, он сможет его расшифровать и, передав ответ обратно на сервер, подтвердить свою подлинность.
Клиент SSH. Генерация RSA-ключа
Для создания подключения с использованием ключа на стороне клиента (устройство, которое инициирует подключение) генерируется SSH-ключ, включающий в себя два файла – приватную и публичную части. Публичная часть ключа будет передана на сервер (устройство, с которым устанавливается связь).
Сгенерируйте ключ утилитой ssh-keygen:
ssh-keygen
Утилита информирует о каталоге размещения сгенерированных ключей. Каталог можно изменить, указав другой путь (не рекомендуется):
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Далее будет предложено установить пароль на ключ для защиты от несанкционированного доступа третьих лиц. Опция не является обязательной. Если оставить поле пустым, пароль не будет установлен:
Created directory '/home/admin/.ssh'.
Enter passphrase (empty for no passphrase):
После этого происходит генерация ключей. По завершении процесса генерации будут указаны каталоги хранения id_rsa (приватная часть ключа) и id_rsa.pub (публичная часть ключа).
Ключи успешно сгенерированы.
Клиент SSH. Передача открытой части ключа на сервер
Обратите внимание, что при передаче ключа используется имя уже созданного на сервере пользователя. Если такого пользователя на сервере нет, его необходимо создать до передачи ключа. Также на сервере должна быть доступна аутентификация с применением пароля.
Открытую часть ключа передайте на сервер при помощи утилиты ssh-copy-id в формате вида:
ssh-copy-id -i <путь_до_ключа> <имя_пользователя>@<IP-адрес_сервера>
Например:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.100.61
При первом подключении к серверу будет предложено проверить отпечаток ключа fingerprint. Для подтверждения наберите yes. Отпечаток ключа будет сохранен в файл ~/.ssh/known_hosts.
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/admin/.ssh/id_rsa.pub" The authenticity of host '192.168.100.61 (192.168.100.61)' can't be established. ED25519 key fingerprint is SHA256:q3oeMFb4bpE4SMd39cH5QqShw3yFmMXi4Wh5VfS260g. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Далее будет предложено ввести пароль пользователя, от имени которого производится подключение к серверу:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysuser@192.168.100.61's password: <пароль_пользователя>
После этого будет выведена информация о результатах передачи ключа:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user@192.168.100.61'" and check to make sure that only the key(s) you wanted were added.
Выполните проверку подключения к серверу с помощью команды вида:
ssh <имя_пользователя>@<IP-адрес_сервера>
Например:
ssh user@192.168.100.61
Обратите внимание на имя пользователя и имя хоста в командной строке. Если параметры изменились и соответствуют параметрам подключения, аутентификация прошла удачно.
Настройка подключения завершена.
Обратите внимание, что настройка аутентификации с применением RSA-ключа не отключает возможность аутентификации по паролю. По умолчанию аутентификация с применением RSA-ключа имеет более высокий приоритет. В случае утраты ключа или несоответствия параметров, при подключении будет предложено пройти аутентификацию с использованием пароля.
Если аутентификацию с использованием пароля требуется отключить, необходимо изменить конфигурацию на стороне сервера. Подробнее об отключении аутентификации с использованием пароля см. в пункте «Сервер SSH. Отключение аутентификации по паролю».
Клиент SSH. Установка ранее сгенерированного ключа
При установке ранее сгенерированного ключа необходимо убедиться в наличии каталога /.ssh в домашнем каталоге и правах доступа к этому каталогу. Для этого выполните:
ls -la ~
Обратите внимание на права доступа drwx------
к каталогу /.ssh. В случае предоставления прав доступа группе или другим пользователям при попытке подключения к серверу в авторизации будет отказано.
Если каталога /.ssh не существует, его необходимо создать:
mkdir ~/.ssh
и предоставить необходимые права:
chmod 700 ~/.ssh
После этого полученный ключ необходимо разместить в каталоге /.ssh.
Сервер SSH. Отключение аутентификации по паролю
Для отключения аутентификации по паролю на сервере необходимо внести изменения в файл конфигурации SSH-сервера – /etc/ssh/sshd_config. Откройте файл конфигурации (потребуются права администратора):
sudo nano /etc/ssh/sshd_config
Найдите и раскомментируйте параметр PasswordAuthentication
. Установите для него значение no
.
Сохраните изменения и закройте файл.
Для применения внесенных изменений обновите конфигурацию службы командой:
sudo systemctl reload sshd.service
Аутентификация по паролю отключена.
Дата последнего изменения: 26.07.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.