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érifier si un serveur SSH est installé
Une cause possible de l'erreur "connexion refusée" est que la machine distante ne fonctionne pas un 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 --liste | grep ssh
Sur les distributions basées sur RHEL :
liste miam installée | grep ssh
Sur openSUSE :
recherche zypper -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 auquel 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 installer openssh-server
Sur openSUSE :
sudo zypper installer openssh
Sur les distributions basées sur Arch :
pacman -S ouvresh
2. Vérifier 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 s'exécute 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 état sshd
Si le service est opérationnel, la sortie l'indiquera comme actif (en cours d'exécution). Sinon, vous verrez quelque chose comme inactif (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 démarrer sshd
Vous pouvez également activer le service pour qu'il démarre automatiquement au démarrage avec :
sudo systemctl activer 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.
Tu peux utilisez 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 sshd_config fichier à l'aide de la commande suivante :
port grep /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 désactiver
Sur les distributions basées sur RHEL et openSUSE :
sudo systemctl désactiver le pare-feu
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 autoriser 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 autoriser 5555
Pour vérifier si la règle a été ajoutée avec succès, vérifiez l'état UFW :
statut sudo ufw
Sur les distributions basées sur RHEL et openSUSE, utilisez la commande suivante pour autoriser SSH dans le pare-feu :
sudo pare-feu-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 pare-feu-cmd --permanent --add-port=4444/tcp
Pour vérifier l'ajout réussi de la règle dans le pare-feu, exécutez :
sudo pare-feu-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 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 existe un conflit IP sur votre réseau, utilisez l'outil arp-scan comme suit :
arp-scan [ID-réseau]
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 le -vvv choix comme suit :
ssh -vvv nom d'utilisateur@adresse_ip
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 SSH "connexion refusée". 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.