Если вы решили настроить на сервере ssh авторизацию по ключу, первое, что необходимо сделать — это сгенерировать секретный и публичный RSA-ключи.

После генерации, публичный ключ копируется на сервер, а секретный ключ остается храниться на локальном компьютере.

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

ssh-keygen -t rsa -b 2048  

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

Нажмите Enter чтобы использовать параметры по умолчанию, тогда программа сохранит ключи в каталог .ssh в домашней директории пользователя.

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

cd ~/.ssh  

В каталоге будут лежать два файла:

  • id_rsa — секретный ключ.

  • id_rsa.pub — публичный ключ.

Скопируйте в надежное место файл секретного ключа, а публичный ключ перенесите на сервер.

Заносим сгенерированный открытый ключ в авторизованные ключи сервера. Для этого скопируйте содержимое id_rsa.pub в конец файла authorized_keys:

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

Настройте ssh авторизацию по ключу в конфиге OpenSSH сервера:

nano /etc/ssh/sshd_config  

Приведите текущие настройки в соответствие параметрам ниже:

PubkeyAuthentication yes  
AuthorizedKeysFile %h/.ssh/authorized_keys  
RhostsRSAAuthentication no  
HostbasedAuthentication no  
PermitEmptyPasswords no  

Чтобы отключить вход по паролю, изменяем значение параметра:

UseLogin no  

Установите права:

chmod 700 ~/.ssh/  
chmod 600 ~/.ssh/authorized_keys  

Далее выполните перезапуск ssh сервера.

service sshd restart  

На этом настройка сервера закончена.

Настройка ssh авторизации по ключу в Linux

Для ssh авторизации по ключу в Linux, создайте файл ~/.ssh/config и скопируйте в него строки ниже. Затем по аналогии укажите адрес сервера и расположение файла секретного ключа.

Host server.net  
IdentityFile ~/.ssh/keys/id_rsa  

Устанавливаем права на файл:

chmod 600 ~/.ssh/config  

Чтобы зайти на сервер используя SSH авторизация по ключу, выполните команду:

ssh user@server.net  

Если хотите вручную указать размещение ключа, выполните команду:

ssh -i ~/.ssh/id_rsa user@server.net  
Обновлено 11 февраля 2019 г.