J'ai remplacé mon port SSH par défaut sur mon serveur domestique (dans le fichier /etc/ssh/sshd_config
) par le port 54747, puis j'ai redémarré les services ssh
et sshd
(jamais fais attention). Pour tester ma configuration, je me suis déconnecté puis je suis rentré sans problème.
Quelques jours plus tard, j'ai installé apt updates, puis redémarré mon serveur. Lorsque j'ai essayé de revenir en SSH (sur le port 54747), une erreur de connexion a été 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 sshd_config, mais il avait toujours le port personnalisé. J'ai donc redémarré les services ssh
et sshd
, et il est revenu au comportement "normal" (ssh sur le port 54747). J'ai essayé de redémarrer à nouveau et la connexion a de nouveau été refusée ...
Quelqu'un sait ce que j'ai mal fait?
Détails supplémentaires:
Sudo reboot -h now
, mais après une recherche, j'ai découvert qu'il était découragé par certaines personnes, alors j'ai essayé Sudo reboot
, mais aucune différenceEDIT Séquence d'événements:
/etc/ssh/sshd_config
EDIT 1:netstat
sortie
rgo@ATLAS:~$ Sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ Sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDIT 2:service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDIT 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 du réseau local de mon ordinateur portable et la commande a été exécutée entre les étapes 6 et 7
ufw status
Status: inactive
EDIT 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: rgo@pts/1 sshd
sd peut être "socket activé" par systemd en fonction de la configuration, ce qui signifie qu’à l’origine, c’est systemd qui configure le port d’écoute, et sshd n’est démarré que lors de la première connexion du client. Cela accélère le temps de démarrage: les démons de service ne sont démarrés qu'à la demande.
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 le remplacer, créez un fichier /etc/systemd/system/ssh.socket.d/port.conf
(créant le répertoire ssh.socket.d
si nécessaire) contenant:
[Socket]
ListenStream=
ListenStream=54747
Modifiez le numéro sur 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. Ceci remplace la valeur par défaut livrée dans /lib/systemd/system/ssh.socket
et doit être effectué 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 en cours d'exécution.
ssh est le processus client qui arbitre et maintient une connexion de session utilisateur au serveur ssh. sshd est le démon qui s'exécute sur le serveur ssh pour écouter et authentifier les demandes de connexion ssh.
Le fichier de configuration sur le serveur sshd qui est lu lors du démarrage du service sshd (qui nécessite la modification des privilèges Sudo) est
/etc/ssh/sshd_config
Le service devrait commencer à partir de
/etc/systemd/system/sshd.service
Pour redémarrer sshd, ce qui impliquerait de relire le fichier sshd_config
Sudo service sshd restart
Pour voir quel port le démon sshd écoute, ainsi que d'autres informations utiles, sur le type de serveur ssh
Sudo service sshd status
Effectuez ces étapes dans l'ordre spécifié:
Redémarrez le serveur ssh
Ouvrez une session de terminal sur le serveur ssh (pas une connexion ssh)
Type hostname
Si nomhôte ne renvoie pas le nom du serveur ssh (Atlas dans ce cas), recommencez l'étape précédente correctement.
grep Port /etc/ssh/sshd_config
- notez le numéro de port. Devrait être celui que vous avez spécifié
Sudo service sshd status
Si le statut indique qu'il est actif, en cours d'exécution et à l'écoute sur le port personnalisé que vous avez spécifié, vous vous en sortez bien. Sinon, le démarrage du service n'appelle pas le fichier sshd_config que vous avez modifié, mais un autre fichier de configuration contenant des informations par défaut. Si le service n'a pas démarré (dit mort et non actif et en cours d'exécution, le problème est différent de celui sur lequel vous avez posé la question.
Ces étapes permettront probablement d'identifier la cause première du problème que vous demandez.
Pour des raisons de test et de simplicité: Du côté client, à partir d’une session de terminal, vous devez ssh sur le serveur ssh comme suit:
ssh -l username -p 54747 hostname
Sur la base des commentaires de l'OP, je soupçonne que sshd ne démarre pas au démarrage mais démarre correctement lorsqu'il est appelé manuellement. Les connexions ssh réussies via le port 22 risquent de ne PAS se connecter au serveur ssh mais à quelque chose d'autre (par exemple, localhost). Pour le prouver ou le démystifier, après la connexion via le type ssh
hostname
D'après ce que dit OP, je suppose que hostname ne sera pas l'atlas du serveur ssh.
Pour isoler davantage ceci, après avoir redémarré le serveur ssh mais avant de poursuivre , d’une session de terminal sur le serveur ssh ( Atlas) type
ssh localhost
Si cela échoue, comme il se doit, alors
ssh -p 54747 localhost
Si cela ne fonctionne pas, cela confirmera les résultats obtenus lors de l'exécution
Sudo service sshd status
Causes possibles auxquelles je peux penser
/usr/lib/systemd/system/sshd.socket
apparemment: https://www.vultr.com/docs/how-to-change-ssh-port -on-coreosVérifiez vos paramètres de port dans le fichier /etc/ssh/sshd_config
. Assurez-vous d’éditer en tant que Sudo ou en tant qu’utilisateur du groupe Sudo. Tout ce que vous avez à faire pour définir le port est, sur un type de ligne Port 54747.
maintenant, redémarrez le service ssh en exécutant service sshd restart.
puis vérifiez que ssh écoute sur ce port en exécutant Sudo netstat -lntp | grep ssh.
Reboot et test.
Vérifiez également vos paramètres réseau. Si vous êtes sur un réseau d'entreprise, assurez-vous que vous êtes dans le bon vlan.
Parfois, les choses tournent mal. Si j'étais à votre place, j'essaierais avec:
cp /etc/ssh/sshd_config $HOME
Sudo apt-get --reinstall install openssh-server
Vous venez probablement de répondre à Y quand apt a détecté des différences entre votre sshd_config et celui de votre paquet. Il vous demande si vous souhaitez installer la version de package mantainer ou conserver la vôtre.