SSH ist ein Netzwerkprotokoll für die sichere Anmeldung bei einem Remote-Computer und die Ausführung von Befehlen. Es wurde entwickelt und erstellt, um die beste Sicherheit beim Fernzugriff auf einen anderen Computer zu bieten. Immer wenn Daten von einem Computer an das Netzwerk gesendet werden, verschlüsselt ssh sie automatisch.
Um SSH zu verwenden, sollte auf dem Zielcomputer eine SSH-Serveranwendung installiert sein, da SSH ein Client-Server-Modell ist. Ein SSH-Server lauscht standardmäßig auf dem Standard-TCP-Port 22. Der SSH-Client ist standardmäßig auf allen Linux-Distributionen verfügbar.
In diesem Tutorial lernen wir SSH-Befehle unter Linux mit Anwendungsbeispielen.
Voraussetzungen
- Ein SSH-Client
- Ein SSH-Server
- IP-Adresse oder Name des Remote-Servers
1. So führen Sie eine SSH-Verbindung zu einem Remote-Server durch
Ein entfernter Server wird über eine IP-Adresse oder den Namen des Hosts verbunden. Verwenden Sie den folgenden Befehl, um eine SSH-Verbindung über eine IP-Adresse herzustellen:
ssh [ IP ADDRESS]
Um sich über den Namen mit ssh zu verbinden, verwenden Sie den folgenden Befehl:
ssh [ HOSTNAME ]
Um beispielsweise eine Verbindung zu einem Remote-Host mit der IP-Adresse 192.168.239.133 herzustellen, würde der Befehl wie folgt lauten.
$ ssh 192.168.239.133
Wenn Sie sich zum ersten Mal mit einem Host verbinden, wird eine Meldung angezeigt, in der Sie gefragt werden, ob Sie die Verbindung fortsetzen möchten. Geben Sie yes ein und geben Sie dann das Passwort für Ihren Remote-Host ein.
2. SSH mit Benutzername
SSH verwendet beim Verbindungsversuch den aktuellen Benutzer des Remote-Servers. Verwenden Sie die folgende Syntax, um eine Verbindung zu ssh mit dem Benutzernamen herzustellen.
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
Um beispielsweise eine Verbindung zum Remote-Host mit der IP-Adresse 192.168.239.134 mit einem Kali-Benutzernamen herzustellen, verwenden Sie den folgenden Befehl.
$ ssh [email protected]
3. SSH mit einer anderen Portnummer
Der SSH-Server hört standardmäßig auf TCP-Port 22, aber wenn Sie ihn ändern möchten, müssen Sie den Port im Befehl angeben.
Um eine Verbindung zu einem Remote-Host über eine andere Portnummer herzustellen, verwenden Sie das Flag -p, wie in der folgenden Syntax gezeigt.
ssh [ IP ADDRESS/HOSTNAME ] -p [ PORT NUMBER ]
Um beispielsweise eine Verbindung zum Remote-Host mit der IP-Adresse 192.168.239.134 über die Portnummer 223 herzustellen, verwenden Sie den folgenden Befehl.
$ ssh 192.168.239.134 -p 223
4. SSH ohne Passwort
In drei einfachen Schritten können Sie sich per ssh ohne Passwort mit Ihrem Remote-Host verbinden. Die drei erforderlichen Schritte zum Anmelden bei einem Remote-Server ohne Eingabe eines Kennworts lauten wie folgt.
SSH-Schlüssel generieren
Um SSH-Schlüssel zu generieren, wird ssh-keygen verwendet, das die öffentlichen und privaten Schlüssel erstellt. Diese Schlüsselpaare werden zur Authentifizierung zwischen Clients und Servern verwendet.
Um ein Schlüsselpaar zu erstellen, geben Sie den folgenden Befehl auf dem Clientcomputer ein.
$ ssh-keygen -t rsa
Geben Sie den Ort und die Paraphrase ein oder drücken Sie die Eingabetaste, um die Standardeinstellungen zu verwenden.
Öffentlichen SSH-Schlüssel kopieren
Sie müssen den öffentlichen SSH-Schlüssel auf einen Remote-Server kopieren, um das Schlüsselpaar zu verwenden. Verwenden Sie zum Kopieren des öffentlichen SSH-Schlüssels auf den Remoteserver die folgende Syntax auf dem Hostcomputer.
ssh-copy-id [USERNAME]@[HOSTNAME/IP ADDRESS]
Verwenden Sie den folgenden Befehl, um den SSH-Schlüssel von der IP-Adresse 192.168.239.134 zu kopieren.
$ ssh-copy-id [email protected]
Melden Sie sich aus der Ferne ohne Passwort an
Mit dem folgenden Befehl können Sie sich jetzt ohne Passwort beim Remote-Server anmelden.
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
Um beispielsweise eine Verbindung zum Remote-Host mit der IP-Adresse 192.168.239.134 mit einem Kali-Benutzernamen herzustellen, verwenden Sie den folgenden Befehl.
$ ssh [email protected]
5. Führen Sie mit SSH einen Befehl auf dem Remote-Server aus
Der ssh-Befehl kann verwendet werden, um sich beim Remote-Server anzumelden. Es kann auch verwendet werden, um Befehle auf dem Remote-Server auszuführen.
Die grundlegende Syntax zum Ausführen von Befehlen über ssh lautet wie folgt.
ssh USER1@SERVER1 COMMAND1
ssh USER1@SERVER1 'COMMAND2'
ssh USER1@SERVER1 'COMMAND1 | COMMAND2'
ssh ADMIN@BOX1 "COMMAND1; COMMAND2; COMMAND3"
Verwenden Sie die folgende Syntax, um Datum und Uhrzeit des Remote-Servers abzurufen:
ssh USER1@SERVER1 date
Um beispielsweise das Datum des Kali-Benutzers vom Server mit der IP-Adresse 192.168.239.134 abzurufen, verwenden Sie den folgenden Befehl.
$ ssh [email protected] date
Um die Speicherplatznutzung des Remote-Servers zu überprüfen, lautet die Syntax wie folgt.
ssh USER1@SERVER1 'df -H'
Um beispielsweise die Speicherplatznutzung des Benutzers kali vom Server mit der IP-Adresse 192.168.239.134 abzurufen, verwenden Sie den folgenden Befehl.
$ ssh [email protected] 'df -H'
Verwenden Sie die folgende Syntax, um die letzten Neustartprotokolle des entfernten Benutzers zu überprüfen.
ssh USER1@SERVER1 "last reboot"
Um beispielsweise die letzten Neustartprotokolle von Kali-Benutzern vom Server mit der IP-Adresse 192.168.239.134 abzurufen, verwenden Sie den folgenden Befehl.
$ ssh [email protected] "last reboot"
SSH-Befehlszeilenoptionen
Sehen wir uns einige der Optionen an, die mit dem Befehl ssh verfügbar sind.
ssh -C
Verwenden Sie die Option -C mit ssh, um die Komprimierung aller vom Remote-Server empfangenen oder übertragenen Daten anzufordern, wie in der folgenden Syntax zu sehen ist.
ssh -C [USERNAME]@[HOSTNAME/IP ADDRESS]
Zum Beispiel
$ ssh -C [email protected]
ssh -v
Die Option -v wird mit dem Befehl ssh verwendet, um den ssh-Client zu debuggen. Das Folgende ist die Syntax:
$ ssh -v [USERNAME]@[HOSTNAME/IP ADDRESS]
Zum Beispiel
$ ssh -v [email protected]
ssh -b
Die Option -b wird verwendet, um eine IP-Adresse an eine SSH-Verbindung zu binden. Die IP-Adresse wird als Quelladresse der SSH-Verbindung verwendet. Dies wird verwendet, wenn ein Client mehr als zwei IP-Adressen hat und Sie möglicherweise nicht wissen, welche IP-Adresse verwendet wird, um eine Verbindung zum SSH-Server herzustellen.
Beispiel:
$ ssh -b 192.168.239.133 [email protected]
Der Befehl bindet die IP-Adresse an den Remote-Server. Wir können es mit netstat |grep ssh
überprüfen Befehl, um die Verbindung zu prüfen.
ssh -F
Die Option -F wird zusammen mit dem Befehl ssh verwendet, um eine Konfiguration pro Benutzer anzugeben. Die Standardkonfigurationsdatei ist ~/.ssh/config.
Um eine bestimmte Konfigurationsdatei zu verwenden, verwenden Sie die Option -F wie folgt.
$ ssh -F [File Location] [USERNAME]@[HOSTNAME/IP ADDRESS]
Zum Beispiel
$ ssh -F /etc/ssh/ssh_config.d [email protected]
ssh -L
Die Option -L wird für die lokale Portweiterleitung verwendet. Die lokale Portweiterleitung ermöglicht es uns, den Datenverkehr von unserem Host über einen Proxy zu einem Zielport zu leiten.
Die grundlegende Syntax für die lokale Portweiterleitung lautet wie folgt.
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATIONPORT [USERNAME]@[HOSTNAME/IP ADDRESS]
Führen Sie beispielsweise den folgenden Befehl aus, um eine Verbindung zum Remote-Host an Port 3306 des Benutzers kali mit der IP 192.168.239.134 vom lokalen Host 192.168.239.133 an Port 3336 herzustellen.
$ ssh -L 3336:192.168.239.133:3306 [email protected]
ssh -R
Die Option -R wird zusammen mit dem SSH-Befehl verwendet, um die Remote-Portweiterleitung zu aktivieren. Das bedeutet, dass Sie einen Port auf dem Remote-Server an einen Port auf Ihrem lokalen Computer weiterleiten können, der dann an einen Port auf dem Zielcomputer weitergeleitet wird.
Die grundlegende Syntax für die Remote-Portweiterleitung lautet wie folgt.
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT
[USERNAME]@[HOSTNAME/IP ADDRESS]
Beispiel:
$ ssh -R 3336:192.168.239.133:3000 [email protected]
Der Befehl lässt ssh den ssh-Server an Port 3336 abhören und den gesamten Datenverkehr an Port 3000 tunneln.
ssh -C -D
Die Option -D aktiviert die dynamische Portweiterleitung. Der übliche SOCKS-Port ist 1001, es kann jedoch jede beliebige Portnummer verwendet werden; dennoch funktionieren manche Programme nur auf Port 1001.
Die grundlegende Syntax für die dynamische Weiterleitung lautet wie folgt.
ssh -D [LOCAL_IP:]LOCAL_PORT [USERNAME]@[HOSTNAME/IP ADDRESS]
Beispiel:
$ sudo ssh -C -D 1001 [email protected]
Das -D gibt die dynamische Portweiterleitung im Port 1001 an und -C aktiviert die Komprimierung.
ssh -X
Die Option -X wird zusammen mit ssh für die X11-Weiterleitung verwendet. Das Folgende ist die Syntax für die X11-Weiterleitung.
ssh -X [USERNAME]@[HOSTNAME/IP ADDRESS]
Verwenden Sie den folgenden Befehl, um die X11-Weiterleitung für den kali-Benutzer mit der IP-Adresse 192.168.239.134 zu aktivieren.
$ ssh -X 192.168.239.134
ssh -Y
Die Option -Y wird zusammen mit ssh für die vertrauenswürdige X11-Weiterleitung verwendet. Das bedeutet, dass der entfernte X11 vollen Zugriff auf die ursprüngliche X11-Anzeige hat.
ssh -Y [USERNAME]@[HOSTNAME/IP ADDRESS]
Verwenden Sie den folgenden Befehl, um die vertrauenswürdige X11-Weiterleitung für den kali-Benutzer mit der IP-Adresse 192.168.239.134 zu aktivieren.
$ ssh -Y 192.168.239.134
ssh -o
Die Option -o kann mit anderen Optionen verwendet werden.
Beispiel:
$ ssh -o "batchmode=yes" [email protected]
Wenn Sie ssh -o "batchmode=yes" verwenden, wird der Befehl erfolgreich auf dem Remote-Computer ausgeführt, wenn die kennwortlose Konnektivität aktiviert ist, andernfalls wird ein Fehler zurückgegeben.
Einige der wichtigsten Befehlszeilenoptionen sind in der folgenden Tabelle aufgeführt.
Option | Beschreibung |
-A | Es ermöglicht die Weiterleitung der Authentifizierungsagentenverbindung. |
-a | Es deaktiviert die Weiterleitung der Verbindung des Authentifizierungsagenten. |
-b | Es wird verwendet, um Quelladressen zu binden. |
-C | Es wird zur Datenkomprimierung verwendet. |
-c cipher_spec | Es wählt die Verschlüsselungsspezifikation zum Verschlüsseln der Sitzung aus. |
-D | Es ist für die dynamische Portweiterleitung auf Anwendungsebene verantwortlich. |
-E Protokolldatei | Es fügt Debug-Protokolle an log_file anstelle von Standardfehlern an. |
-F Konfigurationsdatei | Es gibt eine Konfigurationsdatei pro Benutzer an. |
-g | Es ermöglicht entfernten Hosts, sich mit lokalen weitergeleiteten Ports zu verbinden. |
-i Identitätsdatei | Er liest den privaten Schlüssel für die Public-Key-Authentifizierung. |
-j | Es gibt eine ProxyJump-Konfigurationsanweisung an. |
-l Anmeldename | Es gibt den Benutzer an, der sich beim Remote-Rechner anmeldet. |
-p Port | Es wird verwendet, um den Port für die Verbindung zum Remote-Host anzugeben. |
-q | Es ist der leise Modus. |
-V | Ausführlicher Modus. |
-X | Es aktiviert die X11-Weiterleitung |
-Y | Es aktiviert die vertrauenswürdige X11-Weiterleitung |
Schlussfolgerung
In diesem Tutorial haben wir gelernt, wie man den ssh-Befehl zusammen mit nützlichen Beispielen verwendet. Vielen Dank fürs Lesen. Bitte geben Sie Ihr Feedback und Ihre Vorschläge im Kommentarbereich unten ein.