SSH meistern: Ihr unverzichtbarer Leitfaden für die Kommandozeile

Lernen Sie praktische SSH-Befehle für Login, Schlüssel, Dateiübertragung, Portweiterleitung und wiederverwendbare Host-Konfiguration.

SSH meistern: Ihr unverzichtbarer Kommandozeilen-Leitfaden

Das Secure Shell (SSH)-Protokoll bietet Ihnen eine verschlüsselte Möglichkeit, sich bei entfernten Systemen anzumelden, Befehle auszuführen und Dateien zu übertragen. Wenn Sie Server verwalten, machen einige SSH-Kommandozeilen-Gewohnheiten Ihre Arbeit schneller und sicherer.

Dieser Leitfaden behandelt die Befehle, die Sie am häufigsten verwenden werden: Remote-Login, Schlüsselauthentifizierung, scp, sftp, lokale Portweiterleitung und ~/.ssh/config-Aliase.

Einrichtung einer sicheren Remote-Anmeldung

Die häufigste Verwendung von SSH ist die Sicherung einer Terminalverbindung zu einem entfernten Server. Die grundlegende Syntax ist einfach, aber es gibt entscheidende Optionen für erhöhte Sicherheit und Benutzerfreundlichkeit.

Grundlegende Verbindungssyntax

Der Standardbefehl erfordert die Angabe des entfernten Benutzers und der Host-Adresse (IP oder Domainname):

ssh [benutzer]@[host]
# Beispiel:
ssh [email protected]

Angabe eines nicht standardmäßigen Ports

Aus Sicherheitsgründen ändern viele Administratoren den Standard-SSH-Port (Port 22). Verwenden Sie das Flag -p, um eine andere Portnummer anzugeben:

ssh -p 2222 [email protected]

Ausführen einzelner Remote-Befehle

SSH ist nicht auf das Öffnen einer interaktiven Shell beschränkt. Sie können einen einzelnen Befehl auf dem entfernten Server ausführen und die Ausgabe lokal zurückerhalten, was für Skripterstellung und schnelle Überprüfungen äußerst nützlich ist.

# Führen Sie 'ls -l' auf dem entfernten Server im Verzeichnis /var/log aus
ssh benutzer@host 'ls -l /var/log'

# Überprüfen Sie die Betriebszeit des Servers
ssh benutzer@host uptime

Verwalten der Authentifizierung mit SSH-Schlüsseln

Die Passwortauthentifizierung ist oft Brute-Force-Angriffen ausgesetzt. SSH-Schlüssel verwenden einen privaten Schlüssel auf Ihrem Rechner und einen öffentlichen Schlüssel auf dem entfernten Server, sodass der Server Sie überprüfen kann, ohne Ihr Passwort zu erhalten.

Generieren von Schlüsselpaaren

Wenn Sie noch kein Schlüsselpaar haben, können Sie eines mit ssh-keygen generieren. Es ist bewährte Praxis, eine starke Passphrase zum Schutz Ihres privaten Schlüssels zu verwenden.

ssh-keygen -t ed25519 -C "[email protected]"

RSA-Schlüssel sind immer noch üblich, besonders für ältere Systeme. Für einen neuen Schlüssel auf einem modernen OpenSSH-Setup ist Ed25519 normalerweise die einfachere Standardwahl.

Kopieren des öffentlichen Schlüssels auf den Server

Das Dienstprogramm ssh-copy-id ist der einfachste Weg, Ihren lokalen öffentlichen Schlüssel in die Datei ~/.ssh/authorized_keys des entfernten Benutzers zu installieren. Sie geben normalerweise einmal Ihr Passwort ein, dann können zukünftige Anmeldungen den Schlüssel verwenden.

# Kopiert Ihren Standard-öffentlichen Schlüssel auf den Server und setzt allgemeine Berechtigungen
ssh-copy-id benutzer@host

Tipp: Verwenden des privaten Schlüssels Wenn sich Ihr privater Schlüssel nicht am Standardspeicherort (~/.ssh/id_rsa) befindet, müssen Sie beim Verbinden das Flag -i verwenden, um seinen Pfad anzugeben:

ssh -i ~/.ssh/my_custom_key benutzer@host

Sichere Dateiübertragungen

SSH bietet zwei primäre Werkzeuge für sichere Dateiübertragungen: scp (Secure Copy) und sftp (Secure File Transfer Protocol).

A. Verwenden von Secure Copy (scp)

scp ist ideal für einfache, schnelle, einmalige Dateiübertragungen und bietet eine Befehlszeilenschnittstelle, die dem standardmäßigen Unix-Befehl cp (Kopieren) nachempfunden ist.

Übertragen von Dateien von lokal zu entfernt

# Syntax: scp [lokale_datei] [benutzer]@[host]:/[entfernter_pfad]
scp deployment.tar.gz benutzer@webserver:/var/www/uploads/

Übertragen von Dateien von entfernt zu lokal

# Syntax: scp [benutzer]@[host]:/[entfernte_datei] [lokaler_pfad]
scp benutzer@dbserver:/var/log/backup.sql .

Rekursives Kopieren von Verzeichnissen

Verwenden Sie das Flag -r, um gesamte Verzeichnisstrukturen zu kopieren.

scp -r ~/projektdateien/ benutzer@buildserver:/home/benutzer/builds/

B. Verwenden des Secure File Transfer Protocol (sftp)

sftp stellt eine interaktive Sitzung her, ähnlich einem traditionellen FTP-Client, aber gesichert über SSH. Es eignet sich besser zum Navigieren in entfernten Verzeichnissen, Auflisten von Dateien und Durchführen mehrerer Übertragungen innerhalb einer einzigen Sitzung.

Starten einer sftp-Sitzung

sftp benutzer@host

Häufige sftp-Sitzungsbefehle

Befehl Beschreibung
ls Entfernte Dateien auflisten
lls Lokale Dateien auflisten
get dateiname Eine Datei vom entfernten Server herunterladen
put dateiname Eine Datei auf den entfernten Server hochladen
cd /pfad/ Entferntes Verzeichnis wechseln
lcd /pfad/ Lokales Verzeichnis wechseln
quit Die sftp-Sitzung beenden

SSH-Tunneling mit lokaler Portweiterleitung

SSH-Tunneling oder Portweiterleitung ermöglicht es Ihnen, Verbindungen für nicht sichere Protokolle zu verschlüsseln oder auf Dienste in einem internen Netzwerk über einen Sprunghost zuzugreifen. Die häufigste Form ist die lokale Portweiterleitung.

Lokale Portweiterleitung (-L)

Die lokale Weiterleitung leitet Datenverkehr von einem Port auf Ihrem lokalen Rechner zu einem bestimmten Port auf einem entfernten Host über den SSH-Server weiter. Dies ist nützlich, um auf interne Datenbanken, Weboberflächen oder proprietäre Dienste zuzugreifen, die nicht direkt dem öffentlichen Internet ausgesetzt sind.

Szenario: Sie möchten auf einen privaten internen Webserver (nur von jumpbox aus erreichbar) auf Port 80 zugreifen.

# Syntax: ssh -L [lokaler_port]:[ziel_host]:[ziel_port] [benutzer]@[sprunghost]
ssh -L 8080:internal-web.lan:80 benutzer@jumpbox -N
  • -L 8080:internal-web.lan:80: Datenverkehr, der auf Ihrem lokalen Rechner auf Port 8080 ankommt, wird an internal-web.lan auf Port 80 über jumpbox weitergeleitet.
  • -N: Teilt SSH mit, keinen entfernten Befehl auszuführen; es richtet lediglich den Tunnel ein.

Sobald die Verbindung hergestellt ist, können Sie auf die interne Website zugreifen, indem Sie in Ihrem lokalen Browser zu http://localhost:8080 navigieren.

Verbesserung der Effizienz mit der SSH-Konfigurationsdatei

Das manuelle Eintippen komplexer SSH-Befehle, einschließlich benutzerdefinierter Ports, Benutzernamen und Schlüsselpfade, ist ineffizient. Die SSH-Konfigurationsdatei (~/.ssh/config) ermöglicht es Ihnen, Aliase und Einstellungen für häufig verwendete Server zu definieren.

Beispielkonfiguration (~/.ssh/config)

Erstellen oder bearbeiten Sie die Datei ~/.ssh/config mit der folgenden Struktur:

# Server 1: Standardschlüssel, nicht standardmäßiger Port
Host dev-web
    HostName 10.0.0.50
    User deployment_user
    Port 2222
    IdentityFile ~/.ssh/id_rsa_dev

# Server 2: Sprunghost-Zugriff mit Schlüsselauthentifizierung
Host production-db
    HostName 10.0.20.15
    User sysadmin
    IdentityFile ~/.ssh/prod_key
    LocalForward 54320 127.0.0.1:5432

Im zweiten Beispiel öffnet ssh production-db einen lokalen Port auf Ihrer Workstation. Sie können dann einen PostgreSQL-Client auf localhost:54320 verweisen, und SSH transportiert den Datenverkehr zu 127.0.0.1:5432, wie vom entfernten Host gesehen.

Verbinden mit Aliasen

Nach der Konfiguration wird das Verbinden erheblich einfacher:

# Verbindet zu 10.0.0.50 auf Port 2222 als deployment_user
ssh dev-web

# Verbindet und richtet automatisch die Portweiterleitung ein (falls konfiguriert)
ssh production-db

Wichtigste Erkenntnis

Beginnen Sie mit ssh benutzer@host, fügen Sie schlüsselbasierte Authentifizierung hinzu und verschieben Sie wiederholte Optionen in ~/.ssh/config. Sobald diese Grundlagen solide sind, gibt Ihnen die lokale Weiterleitung mit ssh -L eine kontrollierte Möglichkeit, auf private Dienste zuzugreifen, ohne sie direkt dem Netzwerk auszusetzen.