8.2.12 Установка и настройка 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
Ожидаемый результат:
● 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
Сохраняем и перезапускаем службу:
sudo systemctl restart ssh
Для просмотра логов используйте:
sudo journalctl -u ssh
Или для системных логов:
sudo tail -f /var/log/auth.log
Дополнительные настройки OpenSSH
Для повышения безопасности сервера рекомендуется изменить стандартные параметры.
Отключение аутентификации по паролю
Аутентификация по паролю — частая цель атак методом перебора. Отключив её, вы значительно снизите вероятность взлома. После этого подключения будут возможны только по SSH-ключам.
PermitRootLogin without-password
PasswordAuthentication no
Разрешить вход только по ключам
Для дополнительной защиты включите вход только по ключам. Это полностью исключит возможность входа по паролю.
PubkeyAuthentication yes
Изменение стандартного порта (по умолчанию 22)
Порт SSH (22) часто сканируют злоумышленники. Перенос сервиса на нестандартный порт поможет сократить количество автоматических атак.
Port 2222
Обратите внимание: изменение порта помогает снизить количество автоматизированных атак.
Ограничение по 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
Проверить лог подключения:
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
Для iptables:
iptables -L -v -n
Просмотр последних попыток входа:
sudo last -a | grep ssh
Также полезна команда, которая показывает, когда и с каких IP были подключения:
w
Официальная документация