Ubuntu 24.04 et + : Changer le port d'écoute du serveur SSH
Table des matières
Testant la béta d'Ubuntu 24.04 LTS, j'ai remarqué que le changement de port du serveur openssh est sans effet. Cet article a pour but de vous expliquer le changement et de vous donner la solution pour changer le port d'écoute.
Après quelques recherches , depuis la version 1:9.0p1-1ubuntu1 de openssh-server dans Ubuntu 22.10 (et supérieur), OpenSSH est configuré par défaut pour utiliser l'activation de socket systemd. Cela signifie qu'il ne sera pas démarré tant qu'une demande de connexion entrante n'aura pas été reçue.
Chez Canonical, le choix a été fait pour, je cite : réduire la mémoire consommée par les instances de serveurs Ubuntu par défaut, ce qui est particulièrement intéressant avec Ubuntu fonctionnant dans des VM ou des conteneurs LXD.
C'est donc systemd qui va gérer le port d'écoute du serveur openssh. Par conséquent, si on a besoin de le changer le port d'écoute, on ne changera pas la ligne Port dans le fichier /etc/ssh/sshd_config.
D'ailleurs, un commentaire est présent dans le fichier de configuration indiquant : Port and ListenAddress options are not used when sshd is socket-activated, which is now the default in Ubuntu.
Cet article concerne les nouvelles installations, car lors de la mise à niveau depuis Ubuntu 22.04 LTS les paramètres seront migrés : On upgrades from Ubuntu 22.04 LTS, users who had configured Port settings or a ListenAddress setting in /etc/ssh/sshd_config will find these settings migrated to /etc/systemd/system/ssh.socket.d/addresses.conf
Dans cette section, nous allons voir comment changer le port d'OpenSSH.
On va y créer un fichier de configuration directement avec la commande suivante :
Cette commande va créer, s'il n'existe pas, le dossier /etc/systemd/system/ssh.socket.d/ et créer un fichier de configuration appelé override.conf.
On va ajouter la section [Socket] et la paramétrer comme suit avant la ligne ### Edits below this comment will be discarded :
Si le serveur possède plusieurs adresses IP, on pourra n'écouter que sur une seule d'entre elles :
Ensuite, on recharge la configuration de systemd :
Et on redémarre le socket ssh :
Si on utilise le pare-feu fourni par défaut dans Ubuntu (ufw), on n'oubliera pas d'ouvrir le port précédemment défini.
On ajoute notre port personnalisé (exemple avec mon port 22022) :
Si on le souhaite, on peut revenir à un démarrage classique du serveur OpenSSH.
Cela n'est cependant pas conseillé je pense, car c'est une volonté d'Ubuntu de ne plus utiliser ce fonctionnement standard d'OpenSSH.
On pourra alors désactiver le socket systemd pour SSH :
On pourra recharger le démon systemd :
Et on réactive OpenSSH avec son service classique :
Ensuite, les modifications habituelles sur le port d'écoute dans le fichier /etc/ssh/sshd_config seront fonctionnelles.
Introduction
Testant la béta d'Ubuntu 24.04 LTS, j'ai remarqué que le changement de port du serveur openssh est sans effet. Cet article a pour but de vous expliquer le changement et de vous donner la solution pour changer le port d'écoute.
Après quelques recherches , depuis la version 1:9.0p1-1ubuntu1 de openssh-server dans Ubuntu 22.10 (et supérieur), OpenSSH est configuré par défaut pour utiliser l'activation de socket systemd. Cela signifie qu'il ne sera pas démarré tant qu'une demande de connexion entrante n'aura pas été reçue.
Chez Canonical, le choix a été fait pour, je cite : réduire la mémoire consommée par les instances de serveurs Ubuntu par défaut, ce qui est particulièrement intéressant avec Ubuntu fonctionnant dans des VM ou des conteneurs LXD.
C'est donc systemd qui va gérer le port d'écoute du serveur openssh. Par conséquent, si on a besoin de le changer le port d'écoute, on ne changera pas la ligne Port dans le fichier /etc/ssh/sshd_config.
D'ailleurs, un commentaire est présent dans le fichier de configuration indiquant : Port and ListenAddress options are not used when sshd is socket-activated, which is now the default in Ubuntu.
Cet article concerne les nouvelles installations, car lors de la mise à niveau depuis Ubuntu 22.04 LTS les paramètres seront migrés : On upgrades from Ubuntu 22.04 LTS, users who had configured Port settings or a ListenAddress setting in /etc/ssh/sshd_config will find these settings migrated to /etc/systemd/system/ssh.socket.d/addresses.conf
Changer le numéro de port
Paramétrage systemd
Dans cette section, nous allons voir comment changer le port d'OpenSSH.
On va y créer un fichier de configuration directement avec la commande suivante :
Code BASH :
systemctl edit ssh.socket
Cette commande va créer, s'il n'existe pas, le dossier /etc/systemd/system/ssh.socket.d/ et créer un fichier de configuration appelé override.conf.
On va ajouter la section [Socket] et la paramétrer comme suit avant la ligne ### Edits below this comment will be discarded :
Code BASH :
[Socket] ListenStream=22022
Si le serveur possède plusieurs adresses IP, on pourra n'écouter que sur une seule d'entre elles :
Code BASH :
ListenStream=192.168.21.210:2022
Ensuite, on recharge la configuration de systemd :
Code BASH :
systemctl daemon-reload
Et on redémarre le socket ssh :
Code BASH :
systemctl restart ssh.socket
Paramétrage pare-feu ufw
Si on utilise le pare-feu fourni par défaut dans Ubuntu (ufw), on n'oubliera pas d'ouvrir le port précédemment défini.
On ajoute notre port personnalisé (exemple avec mon port 22022) :
Code BASH :
ufw allow 22022/tcp
Solution de contournement
Si on le souhaite, on peut revenir à un démarrage classique du serveur OpenSSH.
Cela n'est cependant pas conseillé je pense, car c'est une volonté d'Ubuntu de ne plus utiliser ce fonctionnement standard d'OpenSSH.
On pourra alors désactiver le socket systemd pour SSH :
Code BASH :
systemctl disable --now ssh.socket
On pourra recharger le démon systemd :
Code BASH :
systemctl daemon-reload
Et on réactive OpenSSH avec son service classique :
Code BASH :
systemctl enable --now ssh.service
Ensuite, les modifications habituelles sur le port d'écoute dans le fichier /etc/ssh/sshd_config seront fonctionnelles.