J'ai changé mon port SSH par défaut sur mon serveur domestique (dans le /etc/ssh/sshd_config
file) sur le port 54747, puis redémarré le ssh
et sshd
services (je ne sais jamais lequel, j'ai donc fait les deux juste pour être en sécurité). Pour tester ma configuration, je me suis déconnecté puis reconnecté sans problème.
Quelques jours plus tard, j'ai installé les mises à jour d'apt, puis j'ai redémarré mon serveur. Lorsque j'ai essayé de revenir en SSH (sur le port 54747), j'ai reçu une erreur de connexion refusée.
Pour une raison quelconque, j'ai essayé de SSH sur le port par défaut, et cela a fonctionné ! Je suis retourné vérifier le sshd_config, mais il avait toujours le port personnalisé. J'ai donc redémarré le ssh
et sshd
services, et il est revenu à un comportement "normal" (ssh sur le port 54747). J'ai essayé de redémarrer à nouveau et la connexion a de nouveau refusé…
Quelqu'un sait ce que j'ai fait de mal ?
Détails supplémentaires :
- Ubuntu 16.04.2 LTS
- Le serveur est également utilisé sur un HTPC, avec une session ouverte (même utilisateur que SSH) sur mon téléviseur
- J'utilise SSH avec la clé RSA de mon ordinateur portable et j'ai désactivé l'authentification par mot de passe
- J'avais l'habitude de redémarrer avec
sudo reboot -h now
, mais après recherche, j'ai découvert qu'il était découragé par certaines personnes, alors j'ai essayésudo reboot
, mais aucune différence
MODIFIER
Enchaînement des événements :
- Changez le port SSH de 22 à 54747 dans
/etc/ssh/sshd_config
- Redémarrer les services ssh et sshd
- Fermer la session SSH en cours
- Rétablissement SSH réussi sur le port 54747
- Redémarrer
- Erreur de connexion SSH sur le port 54747, mais réussie sur le port 22
- Redémarrer les services ssh et sshd
- Retour SSH réussi sur le port 54747, erreur de connexion sur le port 22
- Redémarrer et revenir à 6
MODIFICATION 1 : netstat
sortie
[email protected]:~$ sudo netstat -lntp | grep :54747
[email protected]:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
MODIFICATION 2 : service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
ÉDITION 3 : lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
Pour référence, ATLAS est le nom d'hôte du serveur distant, 192.168.1.27 est l'adresse IP LAN de mon ordinateur portable et la commande a été exécutée entre les étapes 6 et 7
ufw status
Status: inactive
ÉDITION 4 : ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: [email protected]/1 sshd
Réponse acceptée :
ssh peut être "activé par socket" par systemd en fonction de la configuration, ce qui signifie qu'au départ, c'est systemd qui configure le port d'écoute, et sshd n'est démarré que lorsqu'un client se connecte pour la première fois. Cela permet d'accélérer le temps de démarrage :les démons de service ne sont démarrés qu'à la demande.
Connexe :Comment enregistrer l'écran dans Ubuntu ?
Cependant, cela signifie que vous devez également configurer systemd sur le port correspondant. Vous trouverez la configuration du système dans /lib/systemd/system/ssh.socket
qui répertorie ListenStream=22
. Pour remplacer cela, créez un fichier /etc/systemd/system/ssh.socket.d/port.conf
(création du répertoire ssh.socket.d
si besoin) qui contient :
[Socket]
ListenStream=
ListenStream=54747
Remplacez le numéro par le port souhaité. La première entrée vide efface la valeur par défaut précédente et l'entrée suivante ajoute la nouvelle. Cela remplace la valeur par défaut fournie dans /lib/systemd/system/ssh.socket
et doit être fait en plus de changer /etc/ssh/sshd_config
.
Ensuite, exécutez sudo systemctl daemon-reload
pour informer systemd de vos modifications, et sudo systemctl reload ssh
si votre démon ssh était précédemment en cours d'exécution.