Вопрос или проблема
Я установил новый сервер Ubuntu 24.04.01 на хост ESXI для размещения Zabbix.
Это новая машина, драйвера обновлены и т.д. После установки SSH сервера он не слушает на IPv4:22, только на IPv6:22. Я не знаю почему по умолчанию это не оба варианта. В любом случае, я думаю, что с Ubuntu 22 у меня не было такой проблемы.
Вы можете спросить, что я сделал для устранения неполадок.
Добавил новую запись в брандмауэр для 22/tcp и 22/tcp (v6). Ничего не изменилось.
Отключил брандмауэр, ничего не изменилось.
user@srv-zabbix:—$ netstat -tulpn
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.54:53 0.0.0.0:*
udp 0 0 127.0.0.53:53 0.0.0.0:*
udp 0 0 172.23.72.217:68 0.0.0.0:*
Попытка раскомментировать sshd_config ListenAddress 0.0.0.0 ничего не меняет.
Перезапустите сервис, удалите и установите его заново.
Если я попытаюсь использовать tcpdump, ничего не показывает на порту 22. Это не связано с внутренней сетью, я могу свободно подключаться к другим серверам или NAS, брандмауэр также пропускает трафик на Ubuntu.
О да, служба включена и работает.
Ответ или решение
Теория. Проблема, описанная в вашем вопросе, связана с тем, что SSH-сервер в Ubuntu 24.04.01 слушает только на IPv6 на порту 22, а не на IPv4, как это должно происходить по умолчанию. Это может быть связано с настройками конфигурации SSH-сервера или с системой управления сетью Ubuntu. По умолчанию, SSH должен слушать на всех IP-адресах (как IPv4, так и IPv6), если это не изменено.
Пример. В вашей конфигурации SSH, файл sshd_config
, можно указать, какие именно IP-адреса слушать, используя параметр ListenAddress
. При установке значения 0.0.0.0
SSH должен слушать на всех доступных IPv4-адресах. Однако, если он все еще не слушает на IPv4 после этой настройки, это может быть связано с неверной конфигурацией сети или ошибки в системных настройках.
Применение.
-
Проверка конфигурации SSH: Откройте файл конфигурации
/etc/ssh/sshd_config
и убедитесь, что строкиListenAddress
присутствуют и имеют значения:ListenAddress 0.0.0.0 ListenAddress ::
Если они закомментированы (# в начале строки), уберите комментарии.
-
Перезапуск SSH-сервера: После внесения изменений выполните команду для перезапуска SSH-сервиса:
sudo systemctl restart ssh
-
Проверка конфигурации брандмауэра: Убедитесь, что ваш брандмауэр, в данном случае
ufw
(если он используется), позволяет подключения на нужный порт:sudo ufw status
Откройте порт 22 для IPv4, если он закрыт:
sudo ufw allow 22/tcp
-
Проверка активных сетевых интерфейсов: Убедитесь, что ваш сетевой интерфейс имеет корректные настройки IP. Например:
ip addr
Uбедитесь, что у вас правильно настроен интерфейс для работы с IPv4.
-
Обновление системы и служб: Иногда может помочь обновление всей системы для устранения возможных багов:
sudo apt update && sudo apt upgrade
После выполнения всех этих шагов, выполните повторную проверку с помощью netstat
:
sudo netstat -tulpn | grep ssh
Ожидается, что SSH-сервер теперь должен слушаться на порту 22 как для IPv4, так и для IPv6. Если проблема сохраняется, это может указывать на более глубокую проблему, связанную с сетевой конфигурацией самой виртуальной машины или гипервизора ESXi.