Авторизация по SSH-ключу

Последнее обновление: 02 мая 2024 г.

Предлагаем Вашему вниманию небольшую инструкцию, в которой Вы узнаете для чего нужен SSH-ключ, как его создать и как добавить на сервер.

SSH-ключ — безопасный способ соединения с сервером. Подключение по SSH с помощью ключа исключает риск, который связан с подбором и взломом вашего пароля.

Для аутентификации используются два ключа: приватный и публичный.

Публичный ключ хранится на сервере в корневом каталоге, а приватный ключ остаётся на локальном компьютере в зашифрованном виде. Каждый раз, когда вы обращаетесь к серверу, происходит сопоставление ключей. Таким образом, отпадает необходимость в авторизации с помощью пароля, и данные от вашего сервера остаются в безопасности.

Linux, MacOS, Windows 10

Эта инструкция подойдет для ОС Linux, MacOS, а также для версий Windows 10 начиная с 1809 — в них доступен встроенный SSH-клиент. Если у вас более ранняя версия Windows, воспользуйтесь инструкцией из пункта Старые версии Windows (без OpenSSH).

Создание SSH-ключей

Запустите терминал или Windows PowerShell на вашем компьютере и выполните команду:



ssh-keygen

Вы увидите примерно следующее сообщение:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

Нажмите Enter — ключ будет сохранен в указанную директорию по умолчанию.

Далее вам будет предложено задать пароль (кодовую фразу) для ключа. Вы можете задать ее или оставить пустой, просто нажав Enter.

Обратите внимание, что если вы зададите кодовую фразу, ее потребуется вводить при каждой авторизации по ключу.

Процедура создания ключей завершена, ключи сохранены в директории ~/.ssh/ в файлах id_rsa и id_rsa.pub.

Можно скопировать значение публичного ключа прямо в терминале. Чтобы вывести его в терминал, выполните: 

cat ~/.ssh/id_rsa.pub

Теперь публичный ключ необходимо скопировать на сервер. Вы можете вставить ключ самостоятельно на сервере в файл ~/.ssh/authorized_keys, либо следуйте инструкции ниже.

Как добавить SSH ключ на сервер

Чтобы добавить созданный SSH-ключ на существующий сервер, выполните в терминале следующую команду, в зависимости от того, какая ОС установлена на вашем компьютере:




ssh-copy-id root@11.11.11.11

где root — логин вашего сервера,

11.11.11.11 — IP-адрес сервера.




type .ssh/id_rsa.pub | ssh root@11.11.11.11 "cat >> .ssh/authorized_keys"

где root — логин вашего сервера,

11.11.11.11 — IP-адрес сервера.

В результате содержимое файла с публичным ключом id_rsa.pub будет скопировано в файл ~/.ssh/authorized_keys на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером без ввода пароля. 

Старые версии Windows (без OpenSSH)

Пользователям Windows без OpenSSH необходимо скачать SSH-клиент PuTTY на официальном сайте (англоязычная версия) и установить. В его состав также входит специальная программа для генерации ключей PuTTYgen.

Запустите PuTTYgen и нажмите кнопку Generate:

Приведите в движение курсор мыши в окне программы для сбора случайных данных. Индикатор загрузки (зелёная полоска) отображает процесс генерации ключа:

После того как ключ будет создан, программа отобразит информацию с публичным ключом и отпечатком приватного ключа:

Скопируйте публичный ключ из окна Key и сохраните его на локальном компьютере. Также сохраните приватный ключ на компьютер с помощью кнопки Save private key.

Важно: Публичный ключ в формате openSSH можно сохранить, только скопировав его вручную. Ключ, сохранённый с помощью кнопки «Save public key», система Linux не распознаёт.

Подключитесь к серверу по SSH и выполните команду для создания на сервере файла для хранения ключей:




mkdir .ssh



chmod 700 .ssh



cd .ssh

Создайте файл с вашим публичным ключом при помощи команды: 




echo YOUR_PUBLIC_KEY >> authorized_keys

где YOUR_PUBLIC_KEY — ключ ранее скопированный из окна PuTTYgen.

Добавьте ваш приватный ключ в PuTTY (который сохранили при создании ключа):