Présentation
Vous rencontrez des problèmes pour accéder à un serveur distant via SSH ? Si SSH répond par un message "Connexion refusée", vous devrez peut-être modifier la demande ou vérifier la configuration.
Dans ce didacticiel, vous trouverez les raisons les plus courantes de l'erreur de connexion SSH refusée.
Pourquoi la connexion est-elle refusée lorsque je me connecte en SSH ?
Il existe de nombreuses raisons pour lesquelles vous pourriez recevoir le message "Connexion refusée " lors de la tentative de connexion SSH à votre serveur. Pour résoudre ce problème, vous devez d'abord identifier pourquoi le système a refusé votre connexion via SSH.
Vous trouverez ci-dessous certaines des raisons les plus courantes pouvant entraîner un refus de connexion SSH.
Client SSH non installé
Avant de résoudre d'autres problèmes, la première étape consiste à vérifier si SSH est correctement installé. La machine à partir de laquelle vous accédez au serveur doit avoir le client SSH configuré. Sans la configuration correcte du client, vous ne pouvez pas accéder à distance à un serveur.
Pour vérifier si vous avez le client SSH sur votre système, tapez ce qui suit dans la fenêtre du terminal :
ssh
Si le terminal fournit une liste de ssh
options de commande, le client SSH est installé sur le système. Cependant, s'il répond par commande introuvable , vous devez installer le client OpenSSH.
Solution :Installer le client SSH
Pour installer le client SSH sur votre ordinateur, ouvrez le terminal et exécutez l'une des commandes répertoriées ci-dessous.
Pour les systèmes Ubuntu/Debian :
sudo apt install openssh-client
Pour les systèmes CentOS/RHEL :
sudo yum install openssh-client
Le démon SSH n'est pas installé sur le serveur
Tout comme vous avez besoin de la version client de SSH pour accéder à un serveur distant, vous avez besoin de la version serveur pour écouter et accepter les connexions. Par conséquent, un serveur peut refuser une connexion entrante si le serveur SSH est manquant ou si la configuration n'est pas valide.
Pour vérifier si SSH est disponible sur le serveur distant, exécutez la commande :
ssh localhost
Si la sortie répond par "Connexion refusée ", passez à l'installation de SSH sur le serveur.
Solution :Installer SSH sur un serveur distant
Pour résoudre le problème d'un serveur SSH manquant, reportez-vous à la procédure d'installation du serveur OpenSSH.
Les informations d'identification sont erronées
Les fautes de frappe ou les informations d'identification incorrectes sont des raisons courantes d'une connexion SSH refusée. Assurez-vous que vous ne faites pas d'erreur de frappe dans le nom d'utilisateur ou mot de passe .
Ensuite, vérifiez si vous utilisez la bonne adresse IP du serveur.
Enfin, vérifiez que vous disposez du bon port SSH ouvrir. Vous pouvez vérifier en exécutant :
grep Port /etc/ssh/sshd_config
La sortie affiche le numéro de port, comme dans l'image ci-dessous.
Le service SSH est en panne
Le service SSH doit être activé et exécuté en arrière-plan. Si le service est en panne, le démon SSH ne peut pas accepter les connexions.
Pour vérifier l'état du service, entrez cette commande :
sudo service ssh status
La sortie doit répondre que le service est actif. Si le terminal répond que le service est en panne, activez-le pour résoudre le problème.
Solution :Activer le service SSH
Si le système indique que le démon SSH n'est pas actif, vous pouvez démarrer le service en exécutant :
systemctl start sshd
Pour permettre au service de s'exécuter au démarrage, exécutez la commande :
sudo systemctl enable sshd
Le pare-feu empêche la connexion SSH
SSH peut refuser une connexion en raison de restrictions de pare-feu. Le pare-feu protège le serveur des connexions potentiellement dangereuses. Cependant, si vous avez configuré SSH sur le système, vous devez configurer le pare-feu pour autoriser les connexions SSH.
Assurez-vous que le pare-feu ne bloque pas les connexions SSH, car cela pourrait entraîner le message "connexion refusée " erreur.
Solution :Autoriser les connexions SSH via le pare-feu
Pour résoudre le problème que nous avons mentionné ci-dessus, vous pouvez utiliser ufw (Pare-feu non compliqué), l'outil d'interface de ligne de commande pour gérer la configuration du pare-feu.
Tapez la commande suivante dans la fenêtre du terminal pour autoriser les connexions SSH :
sudo ufw allow ssh
Le port SSH est fermé
Lorsque vous tentez de vous connecter à un serveur distant, SSH envoie une requête à un port spécifique. Pour accepter cette demande, un serveur doit avoir le port SSH ouvert.
Si le port est fermé, le serveur refuse la connexion.
Par défaut, SSH utilise le port 22. Si vous n'avez apporté aucune modification à la configuration du port, vous pouvez vérifier si le serveur écoute les requêtes entrantes.
Pour lister tous les ports qui écoutent, exécutez :
sudo lsof -i -n -P | grep LISTEN
Trouvez le port 22 dans la sortie et vérifiez si son STATE est réglé sur ÉCOUTER .
Alternativement, vous pouvez vérifier si un port spécifique est ouvert, dans ce cas, le port 22 :
sudo lsof -i:22
Solution :ouvrir le port SSH
Pour activer le port 22 pour ÉCOUTER les requêtes, utilisez iptables
commande :
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Vous pouvez également ouvrir des ports via l'interface graphique en modifiant les paramètres du pare-feu.
Débogage et journalisation SSH
Pour analyser les problèmes SSH sous Linux, vous pouvez activer le mode verbeux ou débogage mode . Lorsque vous activez ce mode, SSH imprime des messages de débogage qui aident à résoudre les problèmes de connexion, de configuration et d'authentification.
Il existe trois niveaux de verbosité :
- niveau 1 (
-v
) - niveau 2 (
-vv
) - niveau 3 (
-vvv
)
Ainsi, au lieu d'accéder à un serveur distant en utilisant la syntaxe ssh [server_ip]
ajoutez le -v
option et exécutez :
ssh -v [server_ip]
Vous pouvez également utiliser :
ssh -vv [server_ip]
ou
ssh -vvv [server_ip]