Настройка SSH

Инструкция по правильной настройке SSH на сервере.

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

Подключение по SSH-ключам

Генерация ключей

Для этого необходимо сгенерировать пару ключей (публичный и приватный). Публичный хранится на сервере и там где он прописан вы сможете подключиться со своим приватным ключем.

Сгенерировать новую пару можно командой ssh-keygen, где вас запросят путь, куда выхотите сохранить ключ и пароль от ключа (можно оставлять пустым, но нежелательно).

Скриншот 1. Генерация SSH-ключа.

Для большей безопасности можно сгенерировать ключ RSA 4096 следующей командой:

ssh-keygen -t rsa -b 4096

На Windows процесс не сильно сложнее, но делается через приложение PuTTY или Termius.

Установка ключей

После генерации публичный ключ необходимо загрузить на сервер, это можно сделать 4-ю способами:

  1. Через панель управления сервером -> читать.

  2. Скопировать содержимое вашего файла с расширением .pub (в нашем случае test.pub) и вставить в ~/.ssh/authorized_keys на сервере.

  3. Командой ssh-copy-id -i test.pub root@<IP>

  4. Программой PuTTY, Termius или другим менеджером SSH.

Настройка конфигурации

Конфигурационный файл SSH -> /etc/ssh/sshd_config

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

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

PubkeyAuthentication yes
PasswordAuthentication no

Запрет входа для root

Довольно частая практика – создавать пользователя и ограничить доступ к серверу для суперпользователя (root).

PermitRootLogin no

Изменение порта

По умолчанию используется порт 22, но для большей уверенности можно поменять на условный 61234. Если вы используете fail2ban (как настроить защиту?), то вам необходимо будет соответсвующим образом настроить и его, сменив порт с ssh на указанный.

Port 61234

Применение изменений

systemctl restart sshd

Возможные ошибки при подключении

Host key verification failed.

Скриншот 2. Ошибка верификации ключа.

Немного теории, каждый раз когда вы при подключении вводите yes в терминал – вы сохраняете публичный ключ сервера (он есть всегда, даже если аутентификация по паролю) в ~/.ssh/known_hosts.

Это необходимо для предотвращения атак типа MITM (Man-In-The-Middle).

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

Решение проблемы – сбросить сохраненные ключи сервера следующей командой:

ssh-keygen -R <IP_АДРЕС>

Permission denied (publickey).

Данная ошибка означает то, что на сервере выключена аутентификация по паролю. Нужно подключиться с вашим ключoм, отредактировать конфиг и перезагрузить ssh.service, либо написать в поддержку – мы всегда готовы помочь.

Last updated

Was this helpful?