In meinem letzten Beitrag haben wir mit SSH Keygen die Vorbereitungen für den sicheren SSH-Zugang abgeschlossen.
Hier ist der letzte Beitrag: SSH keygen: Der umfassende Leitfaden für Anfänger
Jetzt ist es an der Zeit zu lernen, wie man tatsächlich SSH verwendet, um auf einen Remote-Server zuzugreifen. Die SSH-Befehle sind einfacher als gedacht, aber wenn man ein paar Prinzipien und nützliche Optionen kennt, kann man sie viel effizienter nutzen.
Wie schreibe ich SSH-Befehle?
Das grundlegende Format eines SSH-Befehls ist wie folgt.
ssh [Optionen] [Benutzername]@[Hostadresse] [Befehl]
Schauen wir uns die einzelnen Elemente genauer an.
-
ssh
: Der Befehl, um den SSH-Client auszuführen. -
[Optionen]
: Hier können Sie verschiedene Optionen zur Steuerung der SSH-Verbindung angeben. Zum Beispiel, um eine bestimmte Schlüsseldatei zu verwenden oder Port-Forwarding einzurichten. (Darüber werden wir später ausführlicher sprechen.) -
[Benutzername]
: Der Benutzerkontoname des Remote-Servers, zu dem Sie eine Verbindung herstellen möchten. Wenn der Benutzername Ihres lokalen Computers mit dem des Remote-Servers übereinstimmt, kann dies weggelassen werden. -
[Hostadresse]
: Die IP-Adresse oder der Domainname des Remote-Servers, zu dem Sie eine Verbindung herstellen möchten. -
[Befehl]
(optional): Wenn Sie nach der SSH-Verbindung einen Befehl auf dem Remote-Server sofort ausführen möchten, geben Sie ihn hier ein. Nach der Ausführung dieses Befehls wird die SSH-Sitzung beendet. Wenn dieser Teil weggelassen wird, können Sie sich anmelden und eine interaktive Shell verwenden.
Prinzipien zum Schreiben von Befehlen und einfache Merksätze
Der SSH-Befehl ist so strukturiert, dass er klar angibt: „Welcher Benutzer verbindet sich mit welchem Server?“
-
Grundprinzip:
ssh Benutzername@Hostadresse
- Beispiel:
ssh ubuntu@192.168.1.100
(Verbindung zumubuntu
-Konto auf dem Server 192.168.1.100) - Beispiel:
ssh root@mywebserver.com
(Verbindung zumroot
-Konto auf dem Server mywebserver.com) -
Einfacher Merksatz:
-
„Ich (lokaler Benutzer) will zu jemandem (Remote-Benutzer), der da drüben (Remote-Server) ist!“
ssh
(ich möchte verbinden)[Benutzername]@
(wer)[Hostadresse]
(wo)- Für häufig genutzte Server können Sie die Datei
~/.ssh/config
verwenden, um Aliasnamen zu nutzen, damit Sie nicht jedes Mal die lange Adresse eingeben müssen. (Darüber werden wir im nächsten Beitrag detaillierter sprechen!)
- Beispiel:
Nützliche SSH-Optionen entschlüsseln
SSH bietet eine Vielzahl von Optionen, die kraftvolle Funktionen für unterschiedliche Situationen bereitstellen. Ich werde einige Schlüsselfunktionen vorstellen.
1. -i <IdentityFile>
: Bestimmte private Schlüsseldatei angeben
Wenn Sie mehrere SSH-Schlüssel haben und einen bestimmten privaten Schlüssel verwenden möchten, um auf einen bestimmten Server zuzugreifen, verwenden Sie dies. Standardmäßig werden ~/.ssh/id_rsa
oder ~/.ssh/id_ed25519
verwendet, aber wenn Sie ihn unter einem anderen Namen erstellt haben oder mehrere Schlüssel verwalten, ist dies praktisch.
- Verwendung:
ssh -i ~/.ssh/my_custom_key ubuntu@my_server.com
-
Beispiel:
ssh -i ~/.ssh/id_ed25519_my_server ubuntu@example.com
Geben Sie den Passphrase für den Schlüssel '/home/youruser/.ssh/id_ed25519_my_server' ein:
2. -p <Port>
: SSH-Port des Remote-Servers angeben
Die meisten SSH-Server verwenden standardmäßig den Port 22. Aus Sicherheitsgründen ändern Administratoren jedoch häufig den SSH-Port. In diesem Fall müssen Sie die Option -p
verwenden, um die ändern Portnummer anzugeben.
- Verwendung:
ssh -p 2222 your_user@your_server.com
(Verbindung über Port 2222) -
Beispiel:
ssh -p 2222 myuser@192.168.1.100 Die Authentizität des Hosts '192.168.1.100:2222 (...)' kann nicht festgestellt werden. Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein/[Fingerprint])? ja Warnung: '192.168.1.100:2222' (ED25519) dauerhaft zur Liste der bekannten Hosts hinzugefügt. Letzte Anmeldung: Mon Jun 17 10:00:00 2024 von Ihrer_ip myuser@server:~ $
3. -X
: X11-Forwarding aktivieren (Grafikanwendungen ausführen)
Wenn auf dem Remote-Server eine GUI-Anwendung (Graphical User Interface) installiert ist und Sie diese auf dem Bildschirm Ihres lokalen Computers verwenden möchten, verwenden Sie dies. Es wird das X Window System verwendet, und auf dem lokalen System muss ein X-Server aktiv sein (macOS benötigt XQuartz, Windows benötigt PuTTY + VcXsrv usw.).
- Verwendung:
ssh -X your_user@your_server.com
-
Beispiel:
ssh -X myuser@remote-gui-server.com myuser@remote-gui-server:~ $ firefox &
Nach der Verbindung wird firefox auf dem Remote-Server ausgeführt (das firefox-Fenster erscheint lokal).
Wenn die Leistung schlecht ist oder starke Netzwerkverzögerungen bestehen, kann es unpraktisch sein.
4. -L <LocalPort>:<RemoteHost>:<RemotePort>
: Lokales Port-Forwarding (Local Port Forwarding)
Diese Funktion leitet Verbindungen, die auf einen bestimmten Port (LocalPort) des lokalen Computers eingehen, über einen SSH-Tunnel an einen bestimmten Port (RemotePort) des Remote-Servers (RemoteHost) weiter. Dies ist nützlich, um auf Services hinter einer Firewall zuzugreifen oder wenn eine lokal entwickelte Anwendung auf eine Remote-Datenbank zugreifen muss.
- Verwendung:
ssh -L 8080:localhost:80 your_user@your_server.com
- Dieser Befehl leitet alle Verbindungen, die auf den Port 8080 des lokalen Computers eingehen, über
your_server.com
an den Port 80 innerhalb vonyour_server.com
weiter (localhost:80
bezieht sich aufyour_server.com
selbst).
- Dieser Befehl leitet alle Verbindungen, die auf den Port 8080 des lokalen Computers eingehen, über
-
Beispiel:
-
Wenn Sie nicht direkt auf den Webserver (Port 80) des Remote-Servers zugreifen können und nur SSH verwenden können:
ssh -L 8080:localhost:80 myuser@my_web_server.com
Wenn Sie diesen Befehl ausführen und in Ihrem lokalen Webbrowser auf http://localhost:8080 zugreifen,
tatsächlich eine Verbindung zum Port 80 von my_web_server.com herstellen. -
Wenn die lokale Anwendung
my_db_app
auf den MySQL-Port 3306 vondb_server.internal
zugreifen soll unddb_server.internal
nur übermy_app_server.com
zugänglich ist:ssh -L 3307:db_server.internal:3306 myuser@my_app_server.com
Wenn Sie diesen Befehl ausführen und
my_db_app
lokal auf localhost:3307 zugreifen,
wird die Verbindung übermy_app_server.com
zum Port 3306 vondb_server.internal
hergestellt.-
(Der Grund, warum Port 3307 verwendet wird, ist, dass es bereits eine MySQL-Anwendung auf Port 3306 lokal geben könnte.)
-
-
5. -N
: Nur Port-Forwarding aufrechterhalten, ohne Remote-Befehle auszuführen
In Kombination mit der Option -L
oder -D
(Dynamic Port Forwarding, SOCKS-Proxy) wird diese Option verwendet, um eine SSH-Sitzung zu öffnen, ohne Shell-Befehle auf dem Remote-Server auszuführen, sondern nur die Port-Forwarding-Funktion aufrechtzuerhalten. Dies ist nützlich, um ein Port-Forwarding-Tunnel im Hintergrund aufrechtzuerhalten.
- Verwendung:
ssh -N -L 8080:localhost:80 your_user@your_server.com
-
Beispiel:
ssh -N -L 8080:localhost:80 myuser@my_web_server.com &
Halten Sie das Port-Forwarding-Tunnel im Hintergrund (&) offen und ermöglichen Sie den Zugriff von Ihrem lokalen Webbrowser aus
6. -f
: SSH-Sitzung in den Hintergrund versetzen
Diese Option wird verwendet, um den SSH-Client-Prozess in den Hintergrund zu versetzen, nachdem die SSH-Verbindung erfolgreich hergestellt wurde. Es wird häufig mit der Option -N
verwendet, um ein Port-Forwarding-Tunnel im Hintergrund aufrechtzuerhalten.
- Verwendung:
ssh -f -N -L 8080:localhost:80 your_user@your_server.com
-
Beispiel:
ssh -f -N -L 8080:localhost:80 myuser@my_web_server.com
Wenn Sie diesen Befehl ausführen, wird sofort die Kontrolle über das Terminal zurückgegeben und das SSH-Tunnel läuft im Hintergrund.
Sie können den Prozess mit dem Befehl ps aux | grep ssh überprüfen
Fazit
In diesem Beitrag haben wir die grundlegende Struktur des SSH-Befehls sowie die häufig verwendeten Schlüsseloptionen betrachtet. Insbesondere die Portangabe mit -p
und das Port-Forwarding mit -L
werden in der Praxis häufig verwendet, also empfehle ich Ihnen, sich diese gut einzuprägen.
Im nächsten Beitrag werden wir lernen, wie man mit der Datei ~/.ssh/config
den SSH-Zugang noch einfacher verwalten kann. Bei Fragen können Sie jederzeit einen Kommentar hinterlassen!
Es sind keine Kommentare vorhanden.