Dieser Artikel zeigt Ihnen, wie Sie Probleme mit Secure Shell (SSH) auf einem Linux®-Server beheben.
Verschiedene Arten von Fehlern
Wenn Sie keine SSH-Verbindung zu einem Server herstellen können, sollten Sie auf die Fehler (oder deren Fehlen) achten, die Sie erhalten. Die folgende Liste beschreibt einige mögliche Fehler.
Zugriff verweigert oder Authentifizierung verweigert
Diese Art von Fehler tritt auf, wenn Sie sich über SSH mit falschen Anmeldeinformationen anmelden. Wenn Sie diesen Fehler erhalten, können Sie Folgendes überprüfen:
- Stellen Sie sicher, dass Sie den Benutzernamen und das Passwort richtig eingegeben haben.
- Wenn Sie ein SSH-Schlüsselpaar verwenden, vergewissern Sie sich, dass der private Schlüssel auf Ihrem lokalen Computer installiert ist.
Port 22:Verbindung abgelehnt
Dieser Fehler tritt aus folgenden Gründen auf:
- SSH ist nicht installiert oder wird nicht ausgeführt.
- SSH lauscht auf einem anderen Port.
- Firewall-Regeln erlauben kein SSH.
Netzwerkfehler:Zeitüberschreitung der Verbindung
Dieser Fehler tritt häufig aufgrund von Netzwerkverbindungsproblemen auf dem Server oder Ihrem lokalen Computer auf. Wenn Sie diese Fehler erhalten, vergewissern Sie sich, dass Ihr lokaler Computer mit dem Internet verbunden ist. Wenn eine Verbindung besteht, überprüfen Sie auch die Serververbindung, um sicherzustellen, dass der Server ausgeführt wird.
Von außen prüfen
Hier sind einige gängige Methoden zur Fehlerbehebung bei SSH von außerhalb Ihres Servers:
nmap
nmap
ist ein Tool zur Netzwerkerkundung und ein Sicherheits- oder Port-Scanner. Mit diesem Tool können Sie überprüfen, ob der Port für SSH auf dem Server geöffnet ist. Das folgende Beispiel stellt den Befehl und seine Ausgabe bereit:
$ 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
Mit ssh
mit dem -vvv
flags erzeugt eine ausführliche Ausgabe, wenn Sie sich per SSH auf dem Server anmelden. Dieser Befehl kann einige nützliche Informationen zur Fehlersuche liefern, wo genau das Problem liegen könnte.
Von innen prüfen
Wenn Sie Probleme mit SSH haben, können Sie sich über die Notfallkonsole anmelden, um Fehler am Server zu beheben und die folgenden Bedingungen zu überprüfen:
SSH-Prozess
Stellen Sie zunächst sicher, dass der SSH-Prozess ausgeführt wird, indem Sie den folgenden Befehl ausführen:
- Für Ubuntu® 16.04+, Debian® 8+ und Centos® 7+:
systemctl status sshd
- Für Centos 6:
service sshd status
Wenn der Dienst nicht ausgeführt wird, können Sie den Prozess mit dem folgenden Befehl starten:
- Für Ubuntu 16.04+, Debian 8+ und Centos 7+:
systemctl start sshd
- Für Centos 6:
service sshd start
netstat
Die netstat
zeigt Ihnen die aktuellen Verbindungen auf dem Server an. Dieser Befehl ist eine gute Möglichkeit, um zu überprüfen, auf welchem Port SSH ausgeführt wird. Wenn Sie netstat
ausführen verwenden Sie die Flags -plnt
um die folgende Ausgabe zu erhalten:
# 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
SSH-Konfigurationsdatei
Die SSH-Konfigurationsdatei /etc/ssh/sshd_config , legt die SSH-Konfiguration fest. Es gibt viele Optionen in der Konfigurationsdatei, aber hier sind einige, auf die Sie achten sollten:
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
Alternativ können Sie auch grep
verwenden Befehl, um nach diesen bestimmten Zeilen zu suchen. Wenn Sie grep
verwenden Befehl, müssen Sie spezifisch sein, wenn Sie nach einem bestimmten Ausdruck suchen. Achten Sie auf Zeichensetzung, Großschreibung und Rechtschreibung.
$ sudo grep Port /etc/ssh/sshd_config
# Port 22
Die Firewall
Wenn Sie eine Netzwerkverbindung haben, alle Konfigurationen korrekt sind und Sie immer noch keine Verbindung über SSH herstellen können, sollten Sie sich Ihre Firewall-Regeln auf dem Server ansehen. Auf Linux-Servern iptables hat diese Regeln. Zum Auflisten der Firewall-Regeln in iptables , führen Sie den Befehl iptables -L
aus . Um mehr über iptables zu erfahren , lesen Sie Einführung in iptables.
fail2ban
fail2ban
ist eine Anwendung, die eine IP-Adresse nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche blockiert. Um die Jails zu überprüfen, können Sie den Befehl fail2ban-client status
ausführen . Dieser Befehl zeigt Ihnen alle konfigurierten Jails auf dem Server und die IP-Adressen, die sich in diesen Jails befinden.
Die Protokolldateien
Wenn alles andere fehlschlägt, gehen Sie zu den Protokolldateien. Diese Dateien geben Aufschluss darüber, ob Sie den Server erreichen, ob Sie ein ungültiges Passwort verwenden usw. Zu den Protokolldateien, die Sie überprüfen sollten, gehören die folgenden Dateien:
- Ubuntu oder Debian:/var/log/auth.log
- CentOS oder RHEL®:/var/log/secure
Beim Durchsuchen dieser Protokolldateien können Sie den less
verwenden Befehl, um die gesamte Datei zu analysieren und nach einer bestimmten Zeit oder Zeichenfolge zu suchen. Wenn Sie sich über die Konsole beim Server angemeldet haben, können Sie tail -f
verwenden in den Protokollen, während Sie versuchen, sich per SSH beim Server anzumelden. Dann können Sie die Aktualisierung der Protokolldateien in Echtzeit verfolgen.