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

Залогинился недавно на сервер, на который ни кто не заходил месяца 3. Увидел не очень приятное сообщение, от том, что на сервер попытались залогиниться 56234 раза с того момента, как я туда заходил.

$ There were **56234** failed login attempts since the last successful login.
$ Last login: Sun Jul 28 15:08:23 2019 from xxxxxxxx.xxxx

За час пока я писал эту заметку и параллельно ковыряя настройки сервера, было совершено более 1000 попыток входа.

После внесенных изменений, даже через 10-12 часов, не было ни одной.

Очевидно, что надо обезопасить сервер.
Сейчас мне повезло, ни кто не просочился, хотя пароль всего 20 символов разной каши 🙂
А потом? А у вас? А у других пользователей, у которых есть доступ к SSH?

Так что надо отключать возможность входа по паролю (главное потом ключ не потерять — это будет фиаско).

Инициализируем генерациюю

ssh-keygen -t rsa

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

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

В принципе на этом шаге можно просто нажать Enter и, если такого ключа еще нет, будет создан ключ id_rsa. Я предпочитаю для каждого сервера создавать свой ключ.

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

# Enter passphrase (empty for no passphrase):
# Enter same passphrase again:

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

# Your identification has been saved in /home/rame0/.ssh/test-key.
# Your public key has been saved in /home/rame0/.ssh/test-key.pub.

Теперь нужно залить публичный ключ на сервер (файл .pub):

ssh-copy-id -i /ваш/путь/до/ключа.pub <имя_пользователя>@<ip_хоста>

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

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 keys

root@~~.~~.~~'s password:

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

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@~~.~~.~~'"
and check to make sure that only the key(s) you wanted were added.

Проверим корректность сделанных предложенной командой

ssh <имя_пользователя>@<ip_хоста>

Настройка сервера

Теперь надо настроить сервер — отключить авторизацию по паролю, сменить порт и остальное по мелочи.
Открываем в вашем любимом редакторе (vi, nano, …) файл /etc/ssh/sshd_config.

! Важно при изменении порта проверять
* не занят ли желаемый порт
* входит ли порт в список разрешенных/запрещенных к подключению командой

iptables-save

Я меняю в нем следующие параметры:


# Port 22 Port 5465 # MaxAuthTries 6 MaxAuthTries 2 # PasswordAuthentication yes PasswordAuthentication no #LoginGraceTime 2m LoginGraceTime 30s ## Раскомментировать (или добавить) строчку (запретить старый протокол): Protocol 2

Сохраняем настройки и перезапускаем SSH сервер

sudo service sshd restart

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.