8.2.12 Установка и настройка OpenSSH

The Host Banner OpenSSH

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

Системные требования

  • Виртуальный или Выделенный сервер
  • Минимальные ресурсы: 1 CPU, 512 MB RAM, 10 GB SSD
  • Ubuntu 24.04 LTS
  • Root-доступ или доступ с правами sudo

Важно: если вы настраиваете OpenSSH на публичном сервере, настройте его для безопасной работы — https://thehost.ua/wiki/root/install-openssh#dopolnitelnye-nastroyki-open-ssh

Установка OpenSSH Server

По умолчанию OpenSSH Server доступен в репозиториях Ubuntu 24.04.

Обновим индекс пакетов и установим OpenSSH Server:

sudo apt update
sudo apt install -y openssh-server

Проверим статус службы SSH:

sudo systemctl status ssh

openssh_status

Ожидаемый результат:

● ssh.service - OpenBSD Secure Shell server  
   Active: active (running)

Если служба не запущена — запустите её вручную:

sudo systemctl start ssh --now

Проверка подключения, на локальной машине выполните:

ssh user@IP_СЕРВЕРА

Подробнее о способах подключения читайте в нашей инструкции.

Обратите внимание: необходимо заменить user и IP_СЕРВЕРА на ваш логин и IP-адрес.

Если вы используете ключи — подключайтесь с флагом -i:

ssh -i ~/.ssh/id_rsa user@IP_СЕРВЕРА

Настройка логирования

Настроим подробное логирование. Откроем конфигурационный файл:

sudo nano /etc/ssh/sshd_config

Добавьте или измените следующие параметры:

LogLevel VERBOSE

LogLevel

Сохраняем и перезапускаем службу:

sudo systemctl restart ssh

Для просмотра логов используйте:

sudo journalctl -u ssh

journalctl

Или для системных логов:

sudo tail -f /var/log/auth.log

Дополнительные настройки OpenSSH

Для повышения безопасности сервера рекомендуется изменить стандартные параметры.

Отключение аутентификации по паролю

Аутентификация по паролю — частая цель атак методом перебора. Отключив её, вы значительно снизите вероятность взлома. После этого подключения будут возможны только по SSH-ключам.

PermitRootLogin without-password
PasswordAuthentication no

password

Разрешить вход только по ключам

Для дополнительной защиты включите вход только по ключам. Это полностью исключит возможность входа по паролю.

PubkeyAuthentication yes

pubkey

Изменение стандартного порта (по умолчанию 22)

Порт SSH (22) часто сканируют злоумышленники. Перенос сервиса на нестандартный порт поможет сократить количество автоматических атак.

Port 2222

port

Обратите внимание: изменение порта помогает снизить количество автоматизированных атак.

Ограничение по IP

Для ограничения доступа по IP можно использовать iptables или ufw.

UFW:

sudo ufw allow from <ВАШ_IP> to any port 2222 proto tcp
sudo ufw enable

iptables:

# Разрешить новые подключения к порту 2222 только с вашего IP
sudo iptables -I INPUT -p tcp -s <ВАШ_IP> --dport 2222 -m conntrack --ctstate NEW -j ACCEPT

# Блокировать все остальные подключения к порту 2222
sudo iptables -A INPUT -p tcp --dport 2222 -j DROP

Обратите внимание: необходимо заменить <ВАШ_IP> на ваш реальный адрес (например, 203.0.113.45). Правило с -I (insert) добавляет разрешение в начало, чтобы оно обрабатывалось первым.

Важно: перед проверкой оставьте активное SSH-подключение или доступ через VNC, чтобы не заблокировать себя.

Проверим подключение:

ssh -p 2222 user@IP_СЕРВЕРА

После внесения изменений обязательно перезапустите SSH:

sudo systemctl restart ssh

Проверка работы

Проверить работу службы можно командой:

sudo systemctl status ssh

openssh_status

Проверить лог подключения:

sudo grep sshd /var/log/auth.log

Ожидаемый результат:

Accepted publickey for user from IP port ...
Распространённые ошибки
Ошибка/Симптом Причина/Решение
Connection refused SSH-сервер не запущен или заблокирован firewall
Permission denied (publickey) Доступ запрещён (publickey)
Port 22 not open Используется нестандартный порт — укажите ключ подключения -p или укажите его в Вашем SSH-клиенте
Cannot restart ssh: failed Ошибка перезапуска SSH — проверьте конфигурацию /etc/ssh/sshd_config

Диагностические команды

Чтобы проверить статус firewall выполните команду.

Если используете UFW:

sudo ufw status verbose

ufw_status_verbose

Для iptables:

iptables -L -v -n

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

sudo last -a | grep ssh

Также полезна команда, которая показывает, когда и с каких IP были подключения:

w

who log in