Comment réparer l’erreur SSH « Connexion refusée » sous Linux
SSH est un protocole réseau qui vous permet d’accéder en toute sécurité à un système distant et de le gérer sur un réseau. Lors de la connexion à une machine distante via SSH, vous avez peut-être rencontré l’erreur « connexion refusée ». L’expérience de ce problème peut être frustrante, surtout si vous êtes un administrateur système et que vous devez effectuer certaines tâches sur le système distant de manière urgente.
Examinons quelques-unes des causes possibles de l’erreur SSH « connexion refusée » et des méthodes pour la résoudre.
1. Vérifiez si un serveur SSH est installé
Une cause possible de l’erreur « connexion refusée » est que la machine distante n’exécute pas de serveur SSH. Sans le serveur SSH, la machine n’acceptera pas les connexions SSH entrantes et vous ne pourrez pas y accéder à distance.
Ainsi, la toute première étape du dépannage de l’erreur consiste à vérifier si un serveur SSH est installé sur la machine distante. Utilisez la commande suivante pour vérifier l’installation du serveur SSH :
Sur les distributions basées sur Debian :
dpkg --list | grep ssh
Sur les distributions basées sur RHEL :
yum list installed | grep ssh
Sur openSUSE :
zypper search -i | grep ssh
Sur les distributions basées sur Arch :
pacman -Q | grep ssh
Si le serveur SSH est installé sur la machine distante, vous le verrez répertorié dans la sortie. Sinon, vous devez installer le serveur OpenSSH sur la machine distante à laquelle vous souhaitez accéder via SSH. OpenSSH est une version open source des outils SSH pour accéder et contrôler à distance les systèmes.
Pour installer le serveur OpenSSH, utilisez les commandes suivantes :
Sur les distributions basées sur Debian :
sudo apt install openssh-server
Sur les distributions basées sur RHEL :
sudo yum install openssh-server
Sur openSUSE :
sudo zypper install openssh
Sur les distributions basées sur Arch :
pacman -S openssh
2. Vérifiez l’état du service SSH
Une autre raison de l’erreur « connexion refusée » peut être que le service SSH est désactivé ou ne fonctionne pas sur la machine distante. Une fois que vous êtes sûr que le serveur SSH est installé, la deuxième chose que vous devez vérifier est l’état du serveur.
sudo systemctl status sshd
Si le service est opérationnel, la sortie l’indiquera comme actif (en cours d’exécution) . Sinon, vous verrez quelque chose comme inactive (mort) .
Si le serveur SSH n’est pas en cours d’exécution, vous pouvez le démarrer manuellement à l’aide de la commande suivante :
sudo systemctl start sshd
Vous pouvez également activer le service pour qu’il démarre automatiquement au démarrage avec :
sudo systemctl enable sshd
3. Vérifiez le port SSH
Par défaut, le serveur SSH s’exécute sur le port 22. Cependant, on peut changer le port par défaut. Par conséquent, si vous recevez l’erreur SSH « connexion refusée », c’est peut-être parce que vous essayez de vous connecter au serveur SSH sur le port par défaut 22 alors qu’il s’exécute sur un port différent.
Vous pouvez utiliser la commande netstat avec grep pour trouver le port sur lequel le serveur SSH écoute :
sudo netstat -plntu | grep ssh
Vous pouvez également trouver le port SSH à partir du fichier sshd_config à l’aide de la commande suivante :
grep port /etc/ssh/sshd_config
Après avoir identifié le bon port SSH, essayez de vous connecter à votre système distant en utilisant ce port spécifique.
4. Vérifiez votre pare-feu système
La plupart des problèmes de connectivité surviennent parce que le pare-feu de votre ordinateur bloque certains ports ou services. Si le serveur SSH est installé et en cours d’exécution sur la machine distante, l’étape suivante consiste à vérifier votre pare-feu.
Pour déterminer si le pare-feu bloque la connexion, désactivez temporairement le pare-feu à l’aide des commandes suivantes :
Sur les distributions Linux basées sur Debian et Arch :
sudo ufw disable
Sur les distributions basées sur RHEL et openSUSE :
sudo systemctl disable firewalld
Si l’erreur n’apparaît pas après la désactivation du pare-feu, cela signifie que le pare-feu bloquait la connexion. Dans ce cas, réactivez le pare-feu et ajoutez une règle qui autorise SSH.
Sur les distributions Linux basées sur Debian et Arch, utilisez la commande suivante pour autoriser SSH dans le pare-feu UFW :
sudo ufw allow ssh
Alternativement, vous pouvez également autoriser SSH par le numéro de port dans le pare-feu. Supposons que le serveur SSH utilise le port 5555, vous utiliserez alors la commande suivante pour l’autoriser dans le pare-feu :
sudo ufw allow 5555
Pour vérifier si la règle a été ajoutée avec succès, vérifiez l’état UFW :
sudo ufw status
Sur les distributions basées sur RHEL et openSUSE, utilisez la commande suivante pour autoriser SSH dans le pare-feu :
sudo firewall-cmd --permanent --add-service=ssh
Pour autoriser SSH par numéro de port, utilisez la commande suivante :
sudo firewall-cmd --permanent --add-port={port}/tcp
Pour un serveur SSH exécuté sur le port 4444, la commande serait :
sudo firewall-cmd --permanent --add-port=4444/tcp
Pour vérifier l’ajout réussi de la règle dans le pare-feu, exécutez :
sudo firewall-cmd --list-all
5. Résoudre les conflits d’adresses IP
Il est également possible que l’erreur SSH « connexion refusée » se produise en raison d’un conflit entre l’adresse IP du serveur SSH et l’adresse IP d’un autre système du réseau. Cela se produit lorsque deux systèmes sur un réseau prétendent avoir la même adresse IP, ce qui entraîne un conflit IP.
Pour confirmer s’il existe un conflit IP sur votre réseau, utilisez l’outil arp-scan comme suit :
arp-scan [network-id]
S’il y a un conflit IP, vous verrez l’adresse IP en double dans la sortie. La capture d’écran ci-dessous est un exemple de conflit IP dans un réseau :
Pour éviter les conflits IP, assurez-vous qu’aucun périphérique n’a d’adresses IP statiques qui chevauchent les adresses du pool DHCP.
Astuce bonus : exécutez SSH en mode verbeux
Chaque fois que vous rencontrez une erreur SSH, essayez d’exécuter la commande ssh en mode détaillé pour rechercher le problème. Pour exécuter SSH en mode détaillé, utilisez la commande ssh avec l’ option -vvv comme suit :
ssh -vvv username@ip_address
En mode verbeux, vous verrez des messages de débogage à chaque étape de la connexion qui vous aideront à comprendre où se situe le problème.
Dépannage de l’erreur SSH « Connexion refusée » sous Linux
En identifiant les causes potentielles de l’erreur de connectivité SSH et en mettant en œuvre les solutions suggérées, vous serez en mesure de dépanner et de résoudre l’erreur de « connexion refusée » SSH. En plus de ces étapes, assurez-vous de vous connecter à la bonne adresse IP et d’utiliser les bons identifiants de connexion.
Pour rendre votre connexion à distance plus sécurisée, vous pouvez configurer une authentification à deux facteurs pour SSH sous Linux.
Laisser un commentaire