SSH, генерация и авторизация по ключам на VPS/VDS

Когда вы подключаетесь к своему серверу VPS/VDS по SSH, удаленный сервер запрашивает пароль. Если пароль сложный, а заходить на сервер нужно часто — можно настроить авторизацию по ключам.

[svetozar@Jarvis ~]$ ssh root@XX.XX.XX.XX
The authenticity of host 'XX.XX.XX.XX (XX.XX.XX.XX)' can't be established.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'XX.XX.XX.XX' (ECDSA) to the list of known hosts.
root@XX.XX.XX.XX's password:

Для этого вам нужно создать пару ключей и загрузить публичный ключ на ваш VPS/VDS сервер.

Для этого перейдите в директорию /.ssh в корневой директории и выполните следующие команды:

cd ~/.ssh
ssh-keygen -t rsa -b 2048

После выполнения команды система задаст несколько вопросов:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/svetozar/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

В ответ на все вопросы нужно просто нажимать [ENTER].  Результат будет следующим:

В самой же папке появятся два фала:

-rw-------.  1 svetozar svetozar 1572 дек 18 19:05 id_rsa
-rw-r--r--.  1 svetozar svetozar  292 дек 18 19:05 id_rsa.pub

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

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

Далее необходимо разместить файл authorized_keys в соответствующий директории на сервере. Для этого нужно:

1. Открыть файл авторизованных ключей и скопировать содержимое файла.

gedit authorized_keys

(В вашей Linux системе может использоваться любой другой редактор, например nano, vi или vim)

2. Подключиться к серверу, введя пароль

ssh root@XX.XX.XX.XX

3) Выполнить следующие команды:

[root@vds ~]# cd /root/
[root@vds ~]# mkdir .ssh
[root@vds ~]# cd .ssh/
[root@vds .ssh]# touch authorized_keys
[root@vds .ssh]# vim authorized_keys

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

Далее Вам нужно закрыть терминал и открыть его. Теперь вы будете сразу авторизоваться на сервере, посредством ввода команды ssh root@XX.XX.XX.XX.

Если у вас много серверов, вы можете использовать один  authorized_keys для всех.

Также для того, чтобы постоянно не прописывать ip, можно добавить alias  в .bashrc пользователя на вашем ПК.

alias srv1='ssh root@XX.XX.XX.XX'
alias srv2='ssh root@XX.XX.XX.X2'
alias srv3='ssh root@XX.XX.XX.X3'

Все, что нужно будет прописать в ваш терминал — это srv1 для подключения к первому серверу и srv2 для подключения к другому. Вместо srv можно указать любое удобное для вас название.

Если вы производите подключение в Windows через PuTTY, вам понадобится приложение PuTTY Key Generator. Скачайте и запустите  PuTTY Key Generator.

Выберите в параметрах SSH-2 RSA и нажмите «Generate»

Далее вы получите код.

Здесь нужно будет скачать публичный и приватный ключ. 

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

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