Как настроить вход в SSH без пароля

Преамбула.

Ключи SSH обеспечивают более безопасный способ доступа к выделенному серверу с SSH, нежели с помощью пароля напрямую. В то время как пароль, в конечном счете,  может быть взломан путем подбора, ключи SSH почти невозможно расшифровать с помощью перебора (bruteforce) в одиночку. Создание Ключевой Пары предоставляет вам две длинные строки символов: публичный и приватный ключи. Вы можете разместить публичный ключ на любом сервере, а затем разблокировать сервер, подключившись к нему с клиента, который уже имеет закрытый приватный ключ. Когда оба ключа совпадают, система разблокирует доступ без необходимости ввода пароля. Вы можете повысить безопасность еще больше, защищая закрытый ключ  кодовой фразой.

Шаг первый - Создание RSA пары ключей.

Первым шагом является создание пары ключей на клиентской машине (будет просто замечательно, если  это будет  ваш компьютер):

ssh-keygen -t rsa

Шаг  второй - Сохранение ключа и кодовой фразы

После того, как вы ввели команду Gen Key, вы получите еще несколько запросов:

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Если вам  удобно, нажмите клавишу ввода и , сохраните файл на своем личном компьютере  (в данном случае, мой пример - пользователь называется «демо»).

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

Весь процесс генерации ключа выглядит так:

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/demo/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /home/demo/.ssh/id_rsa.

Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

The key fingerprint is:

4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a

The key's randomart image is:

+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

Открытый ключ в настоящее время находится в /home/demo/.ssh/id_rsa.pub . закрытый ключ (идентификация) в настоящее время находится в /home/demo/.ssh/id_rsa

Шаг третий - копирование Публичного Ключа.

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

Вы можете скопировать открытый ключ в authorized_keys машины с помощью команды ssh-copy-id. Не забудьте заменить имя пользователя и IP-адрес из примера ниже, на нужные вам.

ssh-copy-id user@123.45.56.78

Либо вы можете вставить в ключи с использованием SSH:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Независимо от того, какой метод вы выбрали, вы должны увидеть что-то вроде:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.

RSA key fingerprint is b1:7d:13:57:2e:31:4d:5e:c3:a8:a3:c0:c4:48:86:12.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.

user@12.34.56.78's password: 

Теперь поопробуйте залогиниться с помощью:

ssh user@12.34.56.78

и проверьте:

~/.ssh/authorized_keys

Это необходимо для того, чтобы убедиться что мы не создали лишние ключи.

Теперь вы можете авторизоваться как user@12.34.56.78 и не увидите предложения ввода пароля. Однако, если вы установите парольную фразу, вам будет предложено ввести ключевую фразу на тот момент (и всякий раз, когда вы захотите еще войти в будущем).

Дополнительный четвертый этап -  отключить пароль для суперпользователя (администратора с root правами) в системе.

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

Для того чтобы сделать это, откройте файл SSH конфигурации:

sudo nano /etc/ssh/sshd_config

в этом файле найдите строку, которая включает PermitRootLogin и измените её, чтобы разрешить пользователям подключаться только используя их SSH ключ

PermitRootLogin without-password

Убедитесь, что изменения вступили в силу:

reload ssh (либо service sshd restart)

Новости
14 апреля 2022

Мы изменили список доступных методов оплаты и работаем над подключением новых платежных шлюзов. Теперь...

11 марта 2022

Проблема устранена. --- В настоящее время у нас возникла проблема с подключением в части...

12 февраля 2022

Статьи
12 марта 2018

Что такое VPN? VPN - Virtual Private Network (виртуальная частная сеть). Это общее название...

20 февраля 2014

14 июня 2013

Что такое домен? Что нужно что бы купить доменное имя? Что нужно знать про домен? Как...