С чего начать Первые шаги трек · 15 ступеней
Linux Labs

sshd — SSH-сервер

4 мин Ubuntu 24.04 · OpenSSH 9.6

Сервер OpenSSH; правь конфиг со вторым открытым сеансом — ошибка в PermitRootLogin закроет доступ немедленно.

Шпаргалка

5 команд Версия для печати
  • sudo sshd -t проверить синтаксис конфига
  • sudo sshd -T | grep -i permitroot действующее значение параметра
  • sudo systemctl reload ssh применить без разрыва сессий
  • ss -tlnp | grep :22 слушает ли порт
  • journalctl -u ssh -f логи подключений в реальном времени

Обзор

sshd — сервер OpenSSH, принимает удалённые подключения (порт 22 по умолчанию). Управляется systemd (юнит называется ssh в Ubuntu). Аутентификация — по ключам (рекомендуется) или паролю.

Вход по ключу: публичный ключ клиента кладётся в ~/.ssh/authorized_keys на сервере (см. ssh-keys).

bash
systemctl status ssh
ss -tlnp | grep :22               # слушает ли порт (см. ss)

Конфигурация

Главный конфиг — /etc/ssh/sshd_config (+ сниппеты в /etc/ssh/sshd_config.d/). Безопасная база:

PermitRootLogin no
PasswordAuthentication no         # только ключи
PubkeyAuthentication yes
Port 22

Применить изменения безопасно (не обрывая текущую сессию):

bash
sudo sshd -t                      # проверить синтаксис конфига
sudo sshd -T | grep -i permitroot # показать ДЕЙСТВУЮЩИЕ значения (важно!)
sudo systemctl reload ssh         # применить (юнит ssh)

Важно. Меняя SSH-конфиг удалённо, держи второй открытый сеанс — так ошибка не закроет доступ к серверу. Страховка с авто-откатом по таймеру: sudo sh -c 'sleep 300 && systemctl restart ssh' &.

Рецепты

2

Хардненинг

Параметр Зачем
PermitRootLogin no не пускать root напрямую
PasswordAuthentication no только ключи (главное против брутфорса)
MaxAuthTries 3 меньше попыток за коннект
AllowUsers alice bob белый список пользователей
AllowGroups sshusers белый список групп
AllowTcpForwarding no запретить туннели (если не нужны)
X11Forwarding no отключить проброс X
ClientAliveInterval 300 отключать мёртвые сессии

Гибко — через Match (для группы/адреса):

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Команды

bash
systemctl status ssh              # состояние сервера
sshd -t                           # проверка sshd_config (синтаксис)
sudo sshd -T                      # эффективная конфигурация (все параметры)
ss -tlnp | grep :22               # слушает ли порт
journalctl -u ssh -f              # логи подключений/отказов
journalctl -u ssh | grep -i fail  # неудачные входы (брутфорс? см. fail2ban)
ssh -v user@host                  # отладка подключения с клиента

Неполадки

5

Permission denied (publickey)

Права на сервере: ~/.ssh=700, authorized_keys=600, владелец — сам пользователь. journalctl -u ssh → часто «Authentication refused: bad ownership or modes». См. ssh-keys.

Connection refused

Сервер не слушает порт: ss -tlnp | grep :22, systemctl status ssh. Либо порт закрыт файрволом — разреши 22/tcp (см. firewall).

Connection timed out

Сетевой/файрвол-уровень (не дошёл до sshd): маршрут, security group, nftables. Проверь nc -zv host 22.

Сменил порт — не пускает

SELinux/порт не разрешён, файрвол на старом порту, или клиент идёт на 22. Открой новый порт в firewall, проверь sshd -T | grep -i port.

Заблокировал себя сменой конфига

Зайди через консоль гипервизора/serial и откати sshd_config (или sshd -t показал бы ошибку до reload — всегда проверяй).

Опасно

reload/restart применяют новый конфиг ко всем последующим подключениям сразу; ошибка в PermitRootLogin, AllowUsers или PasswordAuthentication может закрыть доступ, включая твой собственный. Правь конфиг только при открытом втором сеансе и проверяй sshd -t до перезапуска, а не после. Отключение PasswordAuthentication без предварительно установленного и проверенного ключа оставит сервер без единого рабочего способа входа.

См. также

  • systemctl — Управление службами systemd — start/stop/restart/status/enable/reload.
  • firewall — Фильтрация трафика — простой ufw и низкоуровневый nftables.
  • sudo — Выполнение команд от root и других пользователей; sudoers и NOPASSWD.
Загрузка…