По умолчанию ssh связывает с 0.0.0.0:22, который, очевидно, работает без проблемы. Но теперь, я добавил gitlab контейнер докера к своей системе (который использует порт 22), и таким образом, я должен был ограничить свой хост ssh сервис к единственному IP:
diff -u /etc/ssh/sshd_config_orig /etc/ssh/sshd_config
--- /etc/ssh/sshd_config_orig 2018-02-10 03:31:46.000000000 +0100
+++ /etc/ssh/sshd_config 2019-04-06 13:39:51.291703794 +0200
@@ -14,6 +14,7 @@
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
+ListenAddress 192.168.1.10
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
Но с этим изменением, моя машина не загружается правильно больше: netplan (который управляет моей конфигурацией сети, как упомянуто ниже), кажется, инициализирует сеть асинхронно, в то время как ssh пытается запуститься, но сбои, потому что IP еще не существует в системе.
cat /etc/netplan/01-static-ip.yaml
network:
version: 2
ethernets:
enp6s0:
addresses:
- 192.168.1.10/24
- 192.168.1.234/24
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.223,192.168.1.1]
dhcp4: no
Теперь, что лучший подход должен добавить "сетевую готовую" зависимость к ssh демону?
Моей системой является Ubuntu 18.04. Поскольку это - бездисплейный сервер, sshd важен.
Мое текущее обходное решение использует другой порт и снова использует адрес 0.0.0.0
Стандарт ssh systemd единица объявляет:
After=network.target auditd.service
Если необходимо ожидать сети, чтобы произойти прежде, чем запустить сервис, необходимо изменить эту единицу, которая также будет упорядочена после network-online.target
.
Для возможности обновления это должно быть установлено как дополнительный файл конфигурации в /etc/systemd/system/ssh.service.d/
.