Вопрос или проблема
Я надеюсь, кто-то сможет помочь нам с следующей проблемой. Мы установили две новые машины с 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: соединение отклонено" может быть вызвана множеством факторов, начиная от неправильных настроек службы до проблем с сетевыми правилами. Следуя описанным выше рекомендациям, вы сможете диагностировать и устранить возникшую проблему. Если ни один из методов не помог, рассмотрите возможность обращения к более опытным администраторам серверов или специализированным ресурсам за дополнительной помощью.