J'ai changé mon port SSH par défaut sur mon serveur domestique (dans le /etc/ssh/sshd_config
fichier) en port 54747, puis j'ai redémarré les services ssh
et sshd
(je ne sais pas lequel, donc j'ai fait les deux juste pour être sûr). Pour tester ma configuration, je me suis déconnecté puis reconnecté sans problème.
Quelques jours plus tard, j'ai installé les mises à jour apt, puis redémarré mon serveur. Lorsque j'ai essayé de me connecter à SSH (sur le port 54747), j'ai eu 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é les services ssh
et sshd
, 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 utilise également un HTPC, avec une session ouverte (même utilisateur que SSH) sur mon téléviseur
- Je SSH en utilisant 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 avoir cherché, j'ai découvert qu'il était découragé par certaines personnes, j'ai donc essayésudo reboot
, mais aucune différence
MODIFIER la séquence des événements:
- Changer le port SSH de 22 à 54747 en
/etc/ssh/sshd_config
- Redémarrez les services ssh et sshd
- Mettre fin à la session SSH en cours
- SSH de retour avec succès sur le port 54747
- Redémarrer
- Erreur de connexion SSH sur le port 54747, mais réussie sur le port 22
- Redémarrez les services ssh et sshd
- SSH de retour avec succès sur le port 54747, erreur de connexion sur le port 22
- Redémarrez et revenez à 6
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'IP LAN 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
la source
Port 10285
. Google affiche quelques résultats pour 54747 ... (3) Le serveur SSH peut également fonctionner avec plusieurs ports simultanément. Créez deux directives distinctes pour chaque port:Port 22
puisPort 54747
, ouvrez uniquement la seconde dans le pare-feu. (4) Vous pouvez essayer laMatch LocalPort
directive , placée au début desshd_c
.Réponses:
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. C'est pour accélérer 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
laquelle les listesListenStream=22
. Pour remplacer cela, créez un fichier/etc/systemd/system/ssh.socket.d/port.conf
(créant le répertoiressh.socket.d
si nécessaire) qui contient: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. Cela annule la livraison par défaut
/lib/systemd/system/ssh.socket
et doit être effectué en plus de la modification/etc/ssh/sshd_config
.Ensuite, exécutez
sudo systemctl daemon-reload
pour informer systemd de vos modifications etsudo systemctl reload ssh
si votre démon ssh était en cours d'exécution.la source
/etc/systemd/system/ssh.socket.d/port.conf
est ignorée et le redémarrage réinitialise toujours le port à 22. Le nom de fichier est-il pertinent? Impossible de trouver une bonne documentation sur les remplacements de systemd sur Ubuntu ..conf
. Voir systemd-system.conf (5) pour plus de détails sur les fichiers de configuration de remplacement de systemd.systemctl status ssh.socket
pour voir s'il est activé et ce qu'il écoute.ListenStream=
ligne avant le port personnalisé a empêché cela, je ne sais pas pourquoi. Peut-être que cela "efface" leListenStream=22
paramètre par défaut/lib/systemd/system/ssh.socket
? Façon étrange de remplacer les paramètres. Peut-être la peine d'ajouter cela à la réponse?Vérifiez vos paramètres de port dans le
/etc/ssh/sshd_config
fichier. Assurez-vous que vous modifiez en tant que sudo ou utilisateur du groupe sudo. Tout ce que vous avez à faire pour définir le port est, sur un type de lignePort 54747.
Maintenant, redémarrez le service ssh en exécutantservice sshd restart.
Ensuite, vérifiez que ssh écoute sur ce port en exécutantsudo 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.
la source
Port 22
ligne par défaut enPort 54747
seulement. De plus, le netstat que vous m'avez donné n'avait pas de sortie. J'en ai ajouté un modifié dans mon OPssh -i key.txt user@ipaddress -p 54747
. Vérifiez également si autre chose écoute sur ce port. Faitessudo lsof -i | grep ssh
. Vous pouvez également vérifier votre pare-feu pour vous assurer qu'il ne bloque rien. Faites:sudo ufw status
.shutdown -r now
. Essayez-le et faites-nous connaître les résultats. Voir cet article pour référence: askubuntu.com/questions/483670/…sudo reboot -h now
ou `sudo reboot ''Parfois, les choses tournent mal. Si j'étais chez toi, j'essaierais avec:
la source
cp
la commande est juste au cas où, le processus de réinstallation ne touche généralement pas les fichiers de configuration.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 des privilèges sudo pour le modifier) est
Le service doit démarrer
Pour redémarrer sshd, ce qui impliquerait de relire le fichier sshd_config
Pour voir quel port le démon sshd écoute, ainsi que d'autres informations utiles, sur le type de serveur ssh
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 dedans)
Type
hostname
Si le nom d'hôte ne renvoie pas le nom du serveur ssh (Atlas dans ce cas), recommencez correctement l'étape précédente.
grep Port /etc/ssh/sshd_config
- notez le numéro de port. Doit ê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é, alors vous êtes bon à cette fin. Sinon, il se peut que 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, alors c'est un problème différent de ce que vous avez demandé.
Ces étapes identifieront probablement la cause première du problème que vous posez.
À des fins de test et pour des raisons de simplicité: Du côté client, à partir d'une session de terminal, vous devez ssh dans le serveur ssh comme suit
Sur la base des commentaires 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 peuvent ne PAS se connecter au serveur ssh mais à autre chose (par exemple localhost). Pour prouver ou démystifier cela, après la connexion via le type ssh
D'après ce que dit OP, je suppose que le nom d'hôte ne sera pas l'atlas du serveur ssh.
Pour isoler davantage cela, après le redémarrage du serveur ssh mais avant de faire quoi que ce soit de plus , à partir d'une session de terminal sur le type de serveur ssh (Atlas)
Si cela échoue, comme il se doit, alors
Si cela ne fonctionne pas non plus, cela confirmera les résultats obtenus lors de l'exécution
la source
ssh -p <PORT> <USER>@<IP>
, avec ma clé privée ajoutée à l'agent.Vous venez probablement de répondre Y quand apt a détecté des différences entre votre sshd_config et celui de votre package. Il vous demande si vous souhaitez installer la version de mantainer du package ou conserver la vôtre.
la source
Causes possibles auxquelles je peux penser
/usr/lib/systemd/system/sshd.socket
apparemment: https://www.vultr.com/docs/how-to-change-ssh-port-on-coreosla source
find /etc/ -iname "*ssh*"
pour rechercher plus d'indices.