SSH-соединение отклонено

Вопрос или проблема

Я надеюсь, кто-то сможет помочь нам с следующей проблемой. Мы установили две новые машины с Ubuntu 24.04 несколько недель назад. По соображениям безопасности мы изменили порт SSH по умолчанию (например, 5643). Поскольку Ubuntu 24.04 использует ssh.socket, мы выяснили, что нам нужно сделать что-то вроде этого, чтобы изменить порт:

systemctl edit ssh.socket
[Socket]
ListenStream=
ListenStream=5643
systemctl restart ssh.socket

После перезапуска сокета мы смогли подключиться к SSH через новый порт. Все работало нормально (в том числе и после нескольких перезагрузок машин) до нескольких дней назад. Мы больше не могли подключиться к обеим машинам (SSH: соединение отказано). Мы пробовали наш индивидуальный порт, а также порт по умолчанию (22), оба случая выдали отказ в соединении. Сканирование порта также показало, что оба порта были закрыты.

Нам пришлось подключиться через VNC, чтобы проверить, что происходит. service ssh status показал, что он работает (активирован ssh.socket). Мы попытались удалить override.conf и перезапустили сервис / сокет, но все равно не смогли подключиться к SSH. Только следующее решение исправило проблему:

systemctl disable --now ssh.socket
systemctl enable --now ssh.service

Кто-нибудь знает, сделали ли мы что-то не так? Я все еще думаю, почему это работало в течение нескольких недель и вдруг перестало на обеих VPS машинах (обе также размещены у разных провайдеров).

Вот что я сделал, когда мой Ubuntu 24.04.01 Desktop не позволял ssh подключение.
Я не знаю о ssh.socket, и я не вижу его среди активных сервисов. Что я знаю, так это то, что ssh.service должен быть loaded active running для работы ssh.

Сначала проверьте, так ли это для вас.

$> systemctl -t service -all | grep ssh 

Обычно вы должны увидеть ответ на команду в виде

 ssh.service                      loaded active running OpenBSD Secure Shell server

Если нет ответа на вышеприведенную команду, значит, либо ssh.service не был запущен, либо ssh может быть даже не установлен.

Проверьте, установлен ли ssh.

$> apt-cache policy openssh-server

Если ответ системы выглядит как ниже, он не установлен.

openssh-server:
  Installed: (none)

Сначала необходимо установить ssh.
Примечание: openssh-server на данный момент то же самое, что и ssh. (Ubuntu 24.04.01)
(Все ниже приведено для удобного копирования и вставки.)

$> sudo apt-get install ssh

Затем запустите ssh.service

$> sudo systemctl start ssh

Для проверки решения также можно использовать следующее [1]

$> service ssh status
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: active (running) since Wed 2024-11-20 13:37:24 PST; 23h ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 1323 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 1325 (sshd)
      Tasks: 1 (limit: 392)
     Memory: 4.7M (peak: 5.8M)
        CPU: 1.002s
     CGroup: /system.slice/ssh.service
             └─1325 "sshd: /usr/sbin/sshd -D [listener] 0 из 10-100 запусков"

Следующее можно использовать для отладки. [2]

$> ssh -vvv username@host 

Ссылки:
[1] 16.04 SSH соединение отвергнуто: поиск коренной причины
[2] SSH соединение отвергнуто

Благодарности:

Ответ или решение

Ошибка SSH: Соединение отклонено

При попытке установить SSH-соединение с серверами Ubuntu 24.04 вы можете столкнуться с ошибкой "Connection refused". Эта проблема может возникнуть по различным причинам, связанным с конфигурацией SSH, состоянием служб и сетевыми настройками. В этой статье мы рассмотрим причины возникновения этой ошибки и предложим методы ее устранения.

1. Проверка статуса службы SSH

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

systemctl status ssh.service

Вы должны увидеть статус, аналогичный следующему:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running)

Если служба не запущена или не загружена, попробуйте ее перезапустить:

sudo systemctl start ssh.service

2. Проверка конфигурации порта SSH

Если вы изменили стандартный порт SSH (22) на альтернативный (например, 5643), убедитесь, что этот порт правильно прописан в конфигурации. Откройте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

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

Port 5643

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

sudo systemctl restart ssh.service

3. Проверка состояния сокета SSH

Ubuntu 24.04 использует механизм сокетов для управления службой SSH. Если вы внесли изменения в сокет, это могло повлиять на возможность подключения по SSH. Для просмотра состояния сокета выполните команду:

systemctl status ssh.socket

Обратите внимание, если сокет неактивен или не слушает нужный порт, это может быть причиной проблемы с подключением.

4. Отключение сокета

В некоторых случаях может быть полезно отключить сокет SSH и активировать службу напрямую. Для этого выполните следующие команды:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

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

5. Проверка сетевых настроек и файрволла

Если после всех вышеуказанных шагов проблема все еще сохраняется, необходимо проверить сетевые настройки. Убедитесь, что фаерволл, если он установлен, разрешает входящие соединения на порту, который вы указали для SSH. Для проверки правил использования iptables выполните:

sudo iptables -L

или для ufw:

sudo ufw status

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

sudo ufw allow 5643/tcp

6. Дополнительная диагностика

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

ssh -vvv username@host

Это даст вам детальную информацию о процессе подключения и может помочь выявить причину проблемы.

Заключение

Ошибка "SSH: соединение отклонено" может быть вызвана множеством факторов, начиная от неправильных настроек службы до проблем с сетевыми правилами. Следуя описанным выше рекомендациям, вы сможете диагностировать и устранить возникшую проблему. Если ни один из методов не помог, рассмотрите возможность обращения к более опытным администраторам серверов или специализированным ресурсам за дополнительной помощью.

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

Капча загружается...