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é une erreur "connexion refusée". L'expérience de ce problème peut être frustrante, surtout si vous êtes un administrateur système et devez effectuer de toute urgence certaines tâches sur le système distant.

Examinons quelques-unes des raisons possibles de l'affichage de l'erreur "connexion refusée" sur SSH et les moyens de la résoudre. Vérifier Guide complet sur la façon de configurer SSH sur Linux et de tester votre configuration.

Comment corriger l'erreur "Connexion refusée" via SSH sous Linux

1. Vérifiez que le serveur SSH est installé

L'une des raisons possibles de l'erreur de connexion refusée est que la machine distante n'exécute pas de serveur SSH. Sans serveur SSH, l'appareil n'acceptera pas les connexions SSH entrantes et vous ne pourrez pas y accéder à distance.

La première étape du dépannage consiste donc à vérifier si un serveur SSH est déjà installé sur la machine distante. Utilisez la commande suivante pour vérifier que le serveur SSH est installé :

Sur les distributions basées sur Debian :

dpkg — list | grep ssh

Sur les distributions basées sur RHEL :

yum list installed | grep ssh

Dans openSUSE :

zypper search -i | grep ssh

Sur les distributions basées sur Arch :

pacman -Q | grep ssh

Si un serveur SSH est installé sur la machine distante, vous le verrez répertorié dans la sortie. Sinon, vous devez installer un serveur OpenSSH sur la machine distante à laquelle vous souhaitez accéder via SSH. OpenSSH est une version open source des outils SSH pour l'accès et le contrôle à distance des 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

Dans openSUSE :

sudo zypper install openssh

Sur les distributions basées sur Arch :

pacman -S openssh

Vérifier Comment contrôler à distance Linux depuis Windows.

2. Vérifiez l'état du service SSH

Une autre raison d'une erreur "connexion refusée" peut être que le service SSH est en panne ou ne fonctionne pas sur la machine distante. Une fois que vous vous êtes assuré que le serveur SSH est installé, la prochaine chose que vous devez vérifier est l'état du serveur.

sudo systemctl start sshd

Si le service est en cours d'exécution, la sortie indiquera qu'il est actif (en cours d'exécution). Sinon, vous verrez quelque chose comme inactif (mort).

Comment corriger l'erreur "Connexion refusée" via SSH sous Linux

Si votre serveur SSH n'est pas en cours d'exécution, vous pouvez le démarrer manuellement avec la commande suivante :

sudo systemctl enable sshd

Vous pouvez également activer le service pour qu'il démarre automatiquement au démarrage avec :

sudo netstat -plntu | grep ssh

3. Vérifiez le port SSH

Par défaut, le serveur SSH s'exécute sur le port 22. Cependant, le port par défaut peut être modifié. Ainsi, si vous obtenez une erreur "connexion refusée" dans SSH, c'est peut-être parce que vous essayez de vous connecter à un serveur SSH sur le port 22 par défaut alors qu'il s'exécute sur un port différent.

Vous pouvez utiliser la commande netstat مع grep Pour trouver le port sur lequel votre serveur SSH écoute :

sudo netstat -plntu | grep ssh

Comment corriger l'erreur "Connexion refusée" via SSH sous Linux

Vous pouvez également trouver le port SSH à partir du fichier sshd_config avec la commande suivante :

grep port /etc/ssh/sshd_config

Après avoir sélectionné le bon port SSH, essayez de vous connecter à votre système distant en utilisant ce port spécifique.

4. Vérifiez le pare-feu du système

La plupart des problèmes de connexion sont causés par le pare-feu de votre appareil qui bloque certains ports ou services. Si la machine distante dispose d'un serveur SSH installé et en cours d'exécution, l'étape suivante consiste à vérifier les paramètres du pare-feu.

Pour voir si le pare-feu bloque la connexion, désactivez temporairement le pare-feu avec les 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 ne s'affiche 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 la règle allow SSH.

Sur les distributions Debian et Linux basées sur Arch, utilisez la commande suivante pour autoriser SSH dans le pare-feu UFW :

sudo ufw allow ssh

Alternativement, vous pouvez également autoriser SSH au numéro de port dans le pare-feu. Supposons que votre serveur SSH utilise le port 5555, vous pouvez utiliser la commande suivante pour l'autoriser dans le pare-feu :

sudo ufw allow 5555

Pour vérifier que la règle a bien été ajoutée, vérifiez l'état de l'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 avec le numéro de port, utilisez la commande suivante :

sudo firewall-cmd — permanent — add-port={port}/tcp

Pour le serveur SSH exécuté sur le port 4444 , la commande sera la suivante :

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 la commande suivante :

sudo firewall-cmd — list-all

5. Résoudre les conflits d'adresses IP

Il est également possible qu'une 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 sur le 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 y a un conflit IP dans votre réseau, utilisez un 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 le réseau :

Comment corriger l'erreur "Connexion refusée" via SSH sous Linux

Pour éviter les conflits IP, assurez-vous que les appareils n'ont pas d'adresses IP statiques qui chevauchent les adresses du pool DHCP. Vérifier Qu'est-ce que DHCP, que signifie-t-il et doit-il être utilisé?

Astuce bonus : exécutez SSH en mode verbeux

Lorsque vous rencontrez une erreur SSH, essayez d'exécuter la commande ssh en mode Verbose pour rechercher le problème. Pour exécuter SSH en mode verbeux, utilisez la commande ssh au concombre -vvv comme suit:

ssh -vvv username@ip_address

Comment corriger l'erreur "Connexion refusée" via SSH sous Linux

En mode Verbose, vous verrez des messages de débogage à chaque étape de la connexion qui vous aideront à comprendre où se situe le problème. Vérifier Meilleur client SSH pour iOS pour gérer des serveurs à distance.

Dépannage de "Connexion refusée" sur SSH sous Linux

En identifiant les causes possibles de l'erreur de connexion 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 SSH refusée. En plus de ces étapes, assurez-vous que vous êtes connecté à la bonne adresse IP et que vous utilisez les bons identifiants de connexion.

Pour rendre votre connexion à distance encore plus sécurisée, vous pouvez configurer une authentification à deux facteurs pour SSH sous Linux. Vous pouvez voir maintenant Comment accéder à distance au bureau Ubuntu à partir de Windows.

source
Aller au bouton supérieur