Übersicht über SSH
SSH funktioniert nach dem Client-Server-Modell und verbindet sich über einen SSH-Client mit einem SSH-Server. Standardmäßig wird der Port 22 verwendet, und die Kommunikation wird durch starke Verschlüsselungstechnologien vor Bedrohungen wie Man-in-the-Middle-Angriffen oder Datenabfang geschützt.
Hauptfunktionen von SSH
SSH bietet die folgenden Hauptfunktionen:
Wichtige Funktionen von SSH
- Remote-Befehlsausführung: Sie können Befehle direkt auf einem entfernten Server ausführen.
- Sichere Dateiübertragung: `scp` (Secure Copy) oder `sftp` (SSH File Transfer Protocol) ermöglichen eine sichere Übertragung von Dateien.
- Port-Weiterleitung (Tunneling): Es wird ein verschlüsselter Tunnel zwischen lokalen und entfernten Ports erstellt, um spezifische Dienste sicher zu nutzen.
- X11-Weiterleitung: Es ermöglicht, GUI-Anwendungen vom entfernten Server auf dem lokalen PC auszuführen.
- SSH-Schlüsselbasierte Authentifizierung: Statt Passwörtern wird ein Paar aus öffentlichem und privatem Schlüssel verwendet, um eine sicherere und bequemere Authentifizierung zu bieten.
Wichtige SSH-Befehle
Erfahren Sie, wie Sie mit dem SSH-Befehl auf einen entfernten Server zugreifen und verschiedene Aufgaben ausführen können. Kombinieren Sie die einzelnen Optionen, um die benötigten Funktionen zu nutzen.
1. Grundlegender Zugang und Authentifizierung
2. Erweiterte Funktionen und Weiterleitung
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`ssh` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
SSH-Schlüsselbasierte Authentifizierung
Die schlüsselbasierte Authentifizierung ist eine viel sicherere und bequemere Methode als die Passwortauthentifizierung. Sie verwendet ein Paar aus öffentlichem und privatem Schlüssel zur Authentifizierung und verringert das Risiko der Passwortenthüllung.
SSH-Schlüssel erstellen
Verwenden Sie den Befehl `ssh-keygen`, um ein Paar aus öffentlichem und privatem Schlüssel zu erstellen. Standardmäßig werden die Dateien `~/.ssh/id_rsa` (privater Schlüssel) und `~/.ssh/id_rsa.pub` (öffentlicher Schlüssel) erstellt.
Befehl zum Erstellen von SSH-Schlüsseln
ssh-keygen -t rsa -b 4096
Erstellt ein neues SSH-Schlüsselpaar auf der Festplatte. Sie können den Speicherort und das Passwort für den Schlüssel festlegen.
Verteilung des öffentlichen Schlüssels
Der erzeugte öffentliche Schlüssel (`id_rsa.pub`) muss in die Datei `~/.ssh/authorized_keys` im Heimatverzeichnis des Benutzers auf dem entfernten Server eingefügt werden. Benutzer, deren öffentlicher Schlüssel in dieser Datei registriert ist, können sich ohne Passwort mit ihrem privaten Schlüssel am Server anmelden.
Öffentlichen Schlüssel auf den Server kopieren (mit ssh-copy-id)
ssh-copy-id user@hostname
Mit dem Befehl `ssh-copy-id` können Sie den öffentlichen Schlüssel einfach auf den entfernten Server kopieren. Dies ist die am meisten empfohlene Methode.
Öffentlichen Schlüssel manuell kopieren (mit scp)
scp ~/.ssh/id_rsa.pub user@hostname:~/
ssh user@hostname "mkdir -p ~/.ssh && cat ~/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && rm ~/id_rsa.pub"
Wenn `ssh-copy-id` nicht verwendet werden kann, können Sie den öffentlichen Schlüssel mit `scp` auf den Server kopieren und dann manuell zu `authorized_keys` hinzufügen.
SSH-Konfigurationsdatei (~/.ssh/config)
Mit der SSH-Konfigurationsdatei (`~/.ssh/config`) können Sie die Verbindungsinformationen für häufig verwendete Server im Voraus speichern, um sie bequem zu nutzen. Anstatt komplexe Optionen jedes Mal einzugeben, können Sie einfach mit einem Alias (Alias) eine Verbindung herstellen.
Beispiel für eine Konfigurationsdatei
Das Folgende ist ein Beispiel für die Datei `~/.ssh/config`. Sie können die Verbindungsparameter für mehrere Hosts definieren.
Inhalt der config-Datei
Host myserver
HostName 192.168.1.100
User myuser
Port 2222
IdentityFile ~/.ssh/my_server_key.pem
Host dev-web
HostName dev.example.com
User webadmin
ForwardAgent yes
LocalForward 8080 localhost:80
Wichtige Konfigurationsoptionen
Wichtige Optionen, die in der `config`-Datei verwendet werden können.
- Host: Dies ist das Alias dieses Einstellungsblocks. Es wird verwendet, wie `ssh myserver`.
- HostName: Die IP-Adresse oder der Domainname des entfernten Hosts, zu dem Sie eine Verbindung herstellen möchten.
- User: Der Benutzername, mit dem Sie sich am entfernten Server anmelden möchten.
- Port: Die Portnummer, über die Sie sich verbinden möchten.
- IdentityFile: Der Pfad zur Datei des privaten Schlüssels, die für die Authentifizierung verwendet wird.
- LocalForward: Richten Sie die lokale Portweiterleitung ein. `LocalForward [local_port] [remote_host]:[remote_port]`
- RemoteForward: Richten Sie die Remote-Portweiterleitung ein. `RemoteForward [remote_port] [local_host]:[local_port]`
- ForwardAgent: Aktiviert das SSH-Agent-Forwarding. Nützlich, wenn Sie über mehrere Server hinweg eine Verbindung herstellen.
- ServerAliveInterval: Sendet regelmäßig Signale an den Server, um sicherzustellen, dass die SSH-Verbindung nicht abbricht. (in Sekunden)
- StrictHostKeyChecking: Legt fest, ob die Überprüfung des Hostschlüssels erfolgt. `ja` oder `nein`
Verbindung über die Konfigurationsdatei herstellen
ssh myserver
Wenn Sie in der Datei `~/.ssh/config` das Host-Alias `myserver` definiert haben, können Sie sich ganz einfach wie folgt verbinden.
Verwendung Beispiele
Lernen Sie durch verschiedene Beispiele für die Verwendung des SSH-Befehls die tatsächlichen Szenarien für die Verwaltung von Remote-Servern und Dateiübertragungen kennen.
Grundlegender SSH-Zugang
ssh testuser@192.168.1.100
Verbinden Sie sich mit dem Server 192.168.1.100 unter dem Benutzernamen testuser. Es erscheint eine Aufforderung zur Eingabe des Passworts.
Zugang mit SSH-Schlüsseldatei
ssh -i ~/.ssh/my_key.pem ubuntu@ec2-1-2-3-4.compute-1.amazonaws.com
Verwenden Sie anstelle eines Passworts die private Schlüsseldatei `~/.ssh/my_key.pem`, um sich mit dem Server zu verbinden. (Wird häufig in Cloud-Umgebungen verwendet)
Ausführen eines einzelnen Befehls aus der Ferne
ssh user@hostname "ls -l /var/log"
Führen Sie den Befehl `ls -l /var/log` auf dem Server aus, ohne sich mit ihm zu verbinden, und holen Sie die Ergebnisse lokal ab.
Lokale Portweiterleitung (Zugriff auf Webdienste)
ssh -L 8888:localhost:80 user@hostname
Greifen Sie über den lokalen PC auf den Port 80 (Webserver) des entfernten Servers über den Port 8888 zu. Es ist, als ob der Webserver lokal wäre.
Dateiübertragung mit SCP (lokal -> remote)
scp mylocalfile.txt user@hostname:/tmp/
Kopieren Sie die Datei `mylocalfile.txt`, die sich lokal befindet, in das Verzeichnis `/tmp/` des entfernten Servers.
Dateiübertragung mit SCP (remote -> lokal)
scp user@hostname:/var/log/syslog .
Kopieren Sie die Datei `/var/log/syslog` des entfernten Servers in das aktuelle Verzeichnis des lokalen PCs.