SSH : Échec du serveur SSHD, au lancement du serveur, car l'interface a écouter n'est pas disponible
Au démarrage du serveur j'ai l'erreur Cannot assign requested address. :
# journalctl | grep ssh
juin 29 17:00:06 sshd[2095]: error: Bind to port 22 on 2001:abcd:abcd:abcd::5 failed: Cannot assign requested address.
juin 29 17:00:06 sshd[2095]: fatal: Cannot bind any address.
juin 29 17:00:06 systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
juin 29 17:00:06 systemd[1]: ssh.service: Unit entered failed state.
juin 29 17:00:06 systemd[1]: ssh.service: Failed with result 'exit-code'.
Si je relance sshd quand le serveur est lancé, là c'est ok :
juin 29 17:02:08 sshd[2594]: Server listening on 2001:abcd:abcd:abcd::5 port 22.
C'est sur un serveur Ubuntu 16.04.2 équipé d'un Xeon E3-1240 v5 @3.50GHz
Voici le début du fichier /etc/ssh/sshd_config :
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
ListenAddress [2001:abcd:abcd:abcd::5]
AddressFamily inet6
Protocol 2
Le serveur est configuré pour n'écouter que en IPv6 (AddressFamily inet6) et sur une IPv6 précise (ListenAddress [2001:abcd:abcd:abcd::5]).
Voici la configuration IP: si dans le fichier /etc/ssh/sshd_config je remplace l'IP N°4 par l'IP N°1, je n'ai aucun problème : je pense donc que les IP additionnelles ne sont pas montées immédiatement et que sshd se lance avant que son IP d'écoute soit en service.
auto enp2s0f0
# IP N°1 :
iface enp2s0f0 inet static
address 123.123.123.234
netmask 255.255.255.248
gateway 123.123.123.233
iface enp2s0f0 inet6 static
address 2001:abcd:abcd:abcd::2
netmask 64
gateway 2001:abcd:abcd:abcd::1
dns-nameservers 2001:abcd:abcd:aaaa::1 2001:abcd:abcd:aaaa::2
# IP N°2 :
up ip addr add 123.123.123.235/29 dev $IFACE label $IFACE:0
down ip addr del 123.123.123.235/29 dev $IFACE label $IFACE:0
up ip -6 addr add 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0
down ip -6 addr del 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0
# IP N°3 :
up ip addr add 123.123.123.236/29 dev $IFACE label $IFACE:1
down ip addr del 123.123.123.236/29 dev $IFACE label $IFACE:1
up ip -6 addr add 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0
down ip -6 addr del 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0
# IP N°4 : Monitoring
up ip -6 addr add 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
down ip -6 addr del 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
(Les IPv4 / IPv6 ont étés remplacées)
J'ai trouvé une solution de contournement : créer un fichier /etc/cron.d/network qui redémarre sshd 20 secondes après le démarrage du serveur :
# Auto restart SSH on reboot
@reboot root sleep 20 ; /usr/sbin/service sshd restart
Je ne trouve pas ça propre.
vous avez déjà été confronté a ce problème ?