Как указал А.Б., ваша конфигурация ssh, вероятно, настроена для прослушивания определенного IP-адреса. Если этот IP-адрес недоступен при запуске sshd, служба не будет работать.
По умолчанию sshd настроен на перечисление 0.0.0.0
, что означает любой адрес, и, таким образом, не зависит от наличия конкретного IP-адреса.
Есть два способа решить эту проблему:
network-online.target
systemd предоставляет модуль network-online.target
для сервисов, которым требуется полная работа сети (для всех настроенных интерфейсов ). Таким образом, вы можете запустить sshd после того, как этот модуль запустится после настройки интерфейса
mkdir /etc/systemd/system/sshd.service.d
cat > /etc/systemd/system/sshd.service.d/network-online.conf <<EOF
[Unit]
After=network-online.target
EOF
systemctl daemon-reload
Другой вариант — разрешить прослушивание адресов, отсутствующих на хосте.
Это решение является общесистемным, поэтому оно применимо к любой службе, а не только к sshd.
echo 'net.ipv4.ip_nonlocal_bind = 1' > /etc/sysctl.d/99-nonlocal_bind.conf
systemctl restart systemd-sysctl.service
Совпадение с началом ^
и концом строки $
, а также со строкой PID
(, которую вы не хотите игнорировать FOO(12345)
и BAR(12345)
):
diff -I '^PID([0-9]\{5\})$' expected.out actual.out
Безопаснее сопоставить одну или несколько цифр, чем предполагать, что каждый PID состоит из 5 цифр:
diff -I '^PID([0-9]\+)$' expected.out actual.out