Cet article vous montre comment dépanner Secure Shell (SSH) sur un serveur Linux®.
Différents types d'erreurs
Si vous ne pouvez pas vous connecter en SSH à un serveur, vous devez faire attention aux erreurs (ou à leur absence) que vous recevez. La liste suivante décrit quelques erreurs possibles.
Accès refusé ou Authentification refusée
Ce type d'erreur se produit chaque fois que vous vous connectez via SSH avec des informations d'identification incorrectes. Si vous obtenez cette erreur, vous pouvez vérifier ce qui suit :
- Assurez-vous d'avoir correctement saisi le nom d'utilisateur et le mot de passe.
- Si vous utilisez une paire de clés SSH, assurez-vous que la clé privée est installée sur votre ordinateur local.
Port 22 :Connexion refusée
Cette erreur se produit pour les raisons suivantes :
- SSH n'est pas installé ou en cours d'exécution.
- SSH écoute sur un autre port.
- Les règles de pare-feu n'autorisent pas SSH.
Erreur réseau :la connexion a expiré
Cette erreur se produit souvent en raison de problèmes de connectivité réseau sur le serveur ou sur votre ordinateur local. Chaque fois que vous recevez ces erreurs, assurez-vous que votre ordinateur local est connecté à Internet. S'il est connecté, vérifiez également la connexion au serveur pour vous assurer que le serveur est en cours d'exécution.
Vérifier de l'extérieur
Voici quelques méthodes courantes pour dépanner SSH depuis l'extérieur de votre serveur :
nmap
nmap
est un outil d'exploration de réseau et un scanner de sécurité ou de port. Vous pouvez utiliser cet outil pour vérifier si le port pour SSH est ouvert sur le serveur. L'exemple suivant fournit la commande et sa sortie :
$ nmap <ip-address-of-host>
Starting Nmap 6.40 ( https://nmap.org ) at 2020-03-21 23:44 UTC
Nmap scan report for <ip-address-of-host>
Host is up (0.033s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 4.35 seconds
ssh -vvv
Utiliser ssh
avec le -vvv
flags produit une sortie détaillée lorsque vous vous connectez en SSH au serveur. Cette commande peut fournir des informations utiles pour dépanner exactement où le problème pourrait être.
Vérifier de l'intérieur
Si vous rencontrez des problèmes avec SSH, vous pouvez vous connecter en utilisant la console d'urgence pour dépanner le serveur afin de vérifier les conditions suivantes :
Processus SSH
Tout d'abord, assurez-vous que le processus SSH est en cours d'exécution en exécutant la commande suivante :
- Pour Ubuntu® 16.04+, Debian® 8+ et Centos® 7+ :
systemctl status sshd
- Pour Centos 6 :
service sshd status
Si vous ne voyez pas le service en cours d'exécution, vous pouvez démarrer le processus en utilisant la commande suivante :
- Pour Ubuntu 16.04+, Debian 8+ et Centos 7+ :
systemctl start sshd
- Pour Centos 6 :
service sshd start
netstat
Le netstat
La commande vous montre les connexions actuelles sur le serveur. Cette commande est un bon moyen de vérifier et de voir sur quel port SSH s'exécute. Lorsque vous exécutez netstat
, utilisez les drapeaux -plnt
pour obtenir la sortie suivante :
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::22 :::* LISTEN 13631/sshd
Fichier de configuration SSH
Le fichier de configuration SSH, /etc/ssh/sshd_config , définit la configuration SSH. Il existe de nombreuses options dans le fichier de configuration, mais en voici quelques-unes :
Port 22 <---- The port ssh runs on
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
~
~
~
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes <---- Allows or block users logging in as root
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes <---- Will state whether or not a user needs an ssh key to log in
Alternativement, vous pouvez utiliser le grep
commande pour rechercher ces lignes spécifiques. Lorsque vous utilisez le grep
commande, vous devez être précis lorsque vous recherchez une phrase spécifique. Faites attention à la ponctuation, aux majuscules et à l'orthographe.
$ sudo grep Port /etc/ssh/sshd_config
# Port 22
Le pare-feu
Si vous disposez d'une connectivité réseau, que toutes les configurations sont correctes et que vous ne parvenez toujours pas à vous connecter via SSH, vous pouvez consulter vos règles de pare-feu sur le serveur. Sur les serveurs Linux, iptables a ces règles. Pour répertorier les règles de pare-feu dans iptables , lancez la commande iptables -L
. Pour en savoir plus sur iptables , lisez Introduction à iptables.
fail2ban
fail2ban
est une application qui bloque une adresse IP après un certain nombre de tentatives de connexion infructueuses. Pour vérifier les jails, vous pouvez lancer la commande fail2ban-client status
. Cette commande vous montre toutes les jails configurées sur le serveur et les adresses IP qui se trouvent dans ces jails.
Les fichiers journaux
Lorsque tout le reste échoue, accédez aux fichiers journaux. Ces fichiers fournissent des informations indiquant si vous atteignez ou non le serveur, si vous utilisez un mot de passe non valide, etc. Les fichiers journaux que vous devez consulter incluent les fichiers suivants :
- Ubuntu ou Debian :/var/log/auth.log
- CentOS ou RHEL® :/var/log/secure
Lors de la recherche dans ces fichiers journaux, vous pouvez utiliser le less
commande pour analyser l'ensemble du fichier et rechercher une heure ou une chaîne spécifique. Si vous vous êtes connecté au serveur depuis la console, vous pouvez utiliser tail -f
sur les journaux pendant que vous essayez de vous connecter en SSH au serveur. Ensuite, vous pouvez regarder la mise à jour des fichiers journaux en temps réel.