Wenn es um Remote-Computing geht, SSH ist eines der beliebtesten und sichersten Protokolle. SSH ist ein kryptografisches Netzwerkprotokoll, das eine sichere Verbindung mit Remote-Geräten herstellt. Nach dem Herstellen der Verbindung zu einem Remote-Gerät kann ein Benutzer Befehle in der Remote-Shell ausführen. SSH ist bei Netzwerk- und Systemadministratoren am weitesten verbreitet.
Diese Kurzanleitung (Cheat Sheet) bietet eine Übersicht über SSH, einige gängige Methoden zur Verbindung mit SSH und verschiedene SSH-Konfigurationen.
SSH-Übersicht
SSH ist ein Akronym für Secure Shell. Einige bezeichnen SSH auch als Secure Socket Shell. SSH ist die gängigste Methode, um auf einen Remote-Server zuzugreifen. Wenn Sie sich über SSH mit einem Remote-System verbinden, stellen Sie eine Verbindung zu einem bestehenden Konto her. Sobald die Verbindung hergestellt ist, haben Sie Zugriff auf eine Shell-Sitzung. Alle ausgeführten Befehle werden auf dem Remote-Rechner ausgeführt und die Ausgabe wird auf Ihrem lokalen Terminal gedruckt.
Die SSH-Verbindung folgt einem Client-Server-Modell. Auf dem Remote-System muss der SSH-Daemon ausgeführt werden, um eingehende SSH-Verbindungen zu akzeptieren. Der SSH-Daemon lauscht auf bestimmten Ports, authentifiziert Verbindungsanfragen und generiert die entsprechende Umgebung, wenn die Bedingungen erfüllt sind.
Für diese Anleitung haben wir zwei Ubuntu-Server konfiguriert. Der primäre Server wird so konfiguriert, dass er eine Verbindung zum sekundären Server herstellt. Der sekundäre Server wird so konfiguriert, dass er SSH-Verbindungen vom primären Server akzeptiert. Diese Server-IP-Adressen werden in der gesamten Anleitung verwendet:
-
Primär: 31.171.250.121
-
Sekundär: 31.171.250.130
Für den Anfang können Sie einen Blick auf unsere detaillierten Anleitungen werfen, wie man SSH verwendet, um eine Verbindung zu einem Remote-Server in Ubuntu herzustellen und wie Sie Ihren Linux-Server für die Verwendung der SSH-schlüsselbasierten Authentifizierung konfigurieren. Nun lassen Sie uns beginnen!
SSH-Authentifizierung
Es gibt zwei Hauptarten der SSH-Authentifizierung. Die traditionelle Methode ist die Verwendung eines Passworts. Sie ist weniger sicher und wird dringend nicht empfohlen. Die zweite Methode sind SSH-Schlüssel. SSH-Schlüssel bieten eine sehr hohe Sicherheit und werden dringend empfohlen.
Während die Passwort-Authentifizierung einfacher zu verstehen und zu konfigurieren ist, ist sie leicht ausnutzbar. Beispielsweise können automatisierte Bots Brute-Force-Angriffe verwenden, um in ein System einzudringen. SSH-Schlüssel sind kryptografische Schlüssel. Jeder Schlüssel besteht aus zwei Teilen – einem privaten Schlüssel und einem öffentlichen Schlüssel. Der öffentliche Schlüssel kann bedenkenlos überall geteilt werden. Der private Schlüssel muss jedoch geschützt bleiben.
Um SSH-Schlüssel als Authentifizierungsmethode zu verwenden, muss auf dem Remote-System eine Kopie des öffentlichen Schlüssels installiert sein. Kopien der privaten und öffentlichen Schlüssel sollten auch auf dem lokalen System installiert sein. Standardmäßig sind die öffentlichen Schlüssel in der folgenden Datei aufgelistet. Jeder eindeutige Benutzer hat eine eindeutige Kopie dieser Datei:
|
1 |
~/.ssh/authorized_keys |
So funktioniert der Authentifizierungsprozess:
-
Das Client-System sendet eine Verbindungsanfrage an das Remote-System. Es sendet auch, welcher SSH-Schlüssel verwendet werden soll.
-
Das Remote-System prüft, ob der öffentliche Schlüssel in authorized_keys eingetragen ist.
-
Wenn der Schlüssel existiert, wird eine zufällige Zeichenfolge generiert und mit dem öffentlichen Schlüssel verschlüsselt. Die verschlüsselte Nachricht kann nur mit dem privaten Schlüssel entschlüsselt werden.
-
Nach Erhalt der Zeichenfolge entschlüsselt der Client diese.
-
Durch die Kombination der Zeichenfolge und der zuvor ausgehandelten Sitzungs-ID wird ein MD5-Hash generiert. Der Client sendet den MD5-Hash an das Remote-System.
-
Das Remote-System kennt die zufällige Zeichenfolge und die Sitzungs-ID. Wenn der MD5-Hash übereinstimmt, wird die Verbindung zugelassen.
SSH-Schlüssel
In dieser Anleitung steht der SSH-Schlüssel im Mittelpunkt der Authentifizierung. Daher konzentriert sich dieser Abschnitt darauf, wie man mit SSH-Schlüsseln arbeitet.
-
Generieren eines SSH-Schlüsselpaars
Standardmäßig ist auf einem Linux-System kein SSH-Schlüssel installiert. Das System kann jedoch zuvor generierte/installierte SSH-Schlüssel enthalten. Angenommen, es ist kein vorheriger SSH-Schlüssel vorhanden, müssen wir ein neues öffentliches und privates SSH-Schlüsselpaar generieren. SSH-Unterstützung bietet viele kryptografische Algorithmen zur Generierung von SSH-Schlüsseln, beispielsweise RSA, DSA, ECDSA und EdDSA. RSA ist der standardmäßige und bevorzugte Algorithmus.
-
Generieren eines normalen RSA-Schlüsselpaars
Um ein SSH-Schlüsselpaar zu generieren, führen Sie den folgenden Befehl aus:
|
1 |
ssh-keygen |
Die Eingabeaufforderung fragt Sie, wo das Schlüsselpaar gespeichert werden soll. Wie bereits erwähnt, handelt es sich um ein RSA-Schlüsselpaar. Wenn kein Wert eingegeben wird, speichert SSH es am Standardspeicherort /home/demo/.ssh/id_rsa.
Der nächste Schritt ist die Eingabe einer Passphrase. Es wird empfohlen, eine Passphrase zu verwenden. Die Länge der Passphrase ist beliebig. Sie bietet eine zusätzliche Sicherheitsebene. SSH ermöglicht jedoch das Generieren von Schlüsseln ohne Passphrase. Drücken Sie einfach die Eingabetaste, wenn Sie Schlüssel ohne Passphrase wünschen.
Die endgültige Ausgabe liefert die folgenden Schlüsselinformationen:
-
Der Speicherort des privaten Schlüssels ( /root/.ssh/id_rsa). Er sollte niemals weitergegeben werden.
-
Der Speicherort des öffentlichen Schlüssels ( /root/.ssh/id_rsa.pub). Es ist sicher, ihn mit jedem zu teilen.
-
Der Fingerabdruck des Schlüssels.
-
Ein zufälliges Schlüsselbild. Die Idee dahinter ist, dass Sie im Falle einer Kompromittierung der Schlüssel dies wahrscheinlich an einer Änderung des Schlüsselbildes erkennen können.
-
Generieren eines RSA-Schlüsselpaars mit einer anderen Bit-Anzahl
Standardmäßig sind SSH-Schlüssel 2048 Bit lang. Aus Sicherheitsgründen wird dies als ausreichend erachtet. Wir können jedoch manuell eine andere Bit-Anzahl angeben. Je höher der Bit-Wert, desto stärker ist der Schlüssel.
Führen Sie den folgenden Befehl aus, um ein SSH-Schlüsselpaar mit 4096 Bit zu generieren. Die meisten Server unterstützen 4096-Bit-SSH-Schlüssel. Wenn der Schlüssel zu groß ist, wird er aus Gründen des DDoS-Schutzes möglicherweise nicht akzeptiert:
|
1 |
ssh-keygen -b 4096 |
Da wir bereits ein Schlüsselpaar generiert haben, fragt SSH, ob das vorherige überschrieben werden soll. Der Rest des Prozesses ist derselbe wie beim Generieren eines normalen Schlüsselpaars.
-
Ändern der Passphrase des privaten Schlüssels
Wir können die Passphrase des privaten Schlüssels ändern. Für diesen Vorgang müssen Sie die aktuelle Passphrase kennen. Um die Passphrase zu ändern, führen Sie den folgenden Befehl aus:
|
1 |
ssh-keygen -p |

Der Befehl fordert Sie auf, den Speicherort des privaten Schlüssels einzugeben. Drücken Sie die Eingabetaste, wenn der Schlüssel am Standardspeicherort gespeichert ist. Geben Sie die aktuelle Passphrase ein. Wenn sie akzeptiert wird, können Sie eine neue festlegen.
-
Anzeigen eines SSH-Schlüsselfingerabdrucks
Jedes SSH-Schlüsselpaar teilt sich einen kryptografischen Fingerabdruck. Dieser Fingerabdruck kann verwendet werden, um eindeutige Schlüssel zu identifizieren. Dies kann in zahlreichen Situationen nützlich sein. Führen Sie den folgenden Befehl aus, um den Fingerabdruck eines SSH-Schlüssels zu überprüfen:
|
1 |
ssh-keygen -l |

Geben Sie den Speicherort des Schlüssels ein. Drücken Sie die Eingabetaste, wenn der Schlüssel am Standardspeicherort gespeichert ist.
Kopieren des öffentlichen Schlüssels
Das SSH-Schlüsselpaar ist bereit, um Remote-Verbindungen zu sichern. Damit das Remote-System den SSH-Schlüssel zur Authentifizierung akzeptiert, muss es eine Kopie des öffentlichen Schlüssels besitzen. Es gibt mehrere Möglichkeiten, eine Kopie des öffentlichen Schlüssels auf den Remote-Server zu übertragen.
-
Verwendung von ssh-copy-id
Das ssh-copy-id ist als Teil des OpenSSH-Pakets enthalten. Es ist der Standardweg zum Kopieren des öffentlichen SSH-Schlüssels. Es ist einfach und unkompliziert zu bedienen. Führen Sie den folgenden Befehl aus, um eine Kopie des öffentlichen Schlüssels zu übertragen:
|
1 |
ssh-copy-id <username>@<secondary_server_ip> |

Sie benötigen das Passwort für das Remote-Benutzerkonto, um den Vorgang abzuschließen. Wenn dies erfolgreich war, wird eine Erfolgsmeldung angezeigt.
-
Verwendung einer SSH-Verbindung
Wenn die Verwendung von ssh-copy-id nicht verfügbar ist, der primäre Server jedoch über SSH eine Verbindung zum sekundären Server herstellen kann, können wir einen anderen Trick anwenden, um den Schlüssel zu kopieren. Dabei wird der Inhalt des öffentlichen Schlüssels über den SSH-Befehl an die Remote-Seite weitergeleitet. Beachten Sie, dass dies möglicherweise nicht funktioniert, wenn das Verzeichnis ~/.ssh auf dem Remote-System nicht existiert, funktioniert es möglicherweise nicht:
|
1 |
cat ~/.ssh/id_rsa.pub | ssh <username>@<secondary_server_ip> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
-
Manuelles Kopieren
Wenn eine Remote-Verbindung keine Option ist, bleibt als einziger Vorgang das manuelle Hinzufügen des öffentlichen Schlüssels zum Remote-Server. Rufen Sie zuerst den Inhalt des öffentlichen Schlüssels ab:
|
1 |
cat ~/.ssh/id_rsa.pub |
Platzieren Sie den Schlüssel auf dem Remote-Server am entsprechenden Speicherort:
|
1 2 3 |
mkdir -pv ~/.ssh echo <public_key> >> ~/.ssh/authorized_Schlüssel |
SSH verwenden
Nachdem der öffentliche Schlüssel eingerichtet ist, können wir SSH verwenden, um eine Remote-Verbindung herzustellen.
-
Verbindung zu einem Remote-System herstellen
Der erste Schritt besteht darin, zu lernen, wie man eine Verbindung zum Remote-System über SSH herstellt. Es wird davon ausgegangen, dass sowohl das lokale als auch das Remote-System SSH-Verkehr zulassen. Um eine Verbindung zum Remote-System herzustellen, geben Sie Folgendes ein:
|
1 |
ssh <secondary_server_ip> |

Um eine Verbindung zu einem bestimmten Benutzer auf dem Remote-Server herzustellen, verwenden Sie stattdessen die folgende Struktur:
|
1 |
ssh <username>@<secondary_server_ip> |

Wenn Sie sich zum ersten Mal mit dem Server verbinden, zeigt SSH möglicherweise eine Warnung an. Geben Sie „yes“ ein, um die Verbindung fortzusetzen. Wenn das Remote-Konto passwortgeschützt ist, müssen Sie das Passwort eingeben. Wenn der SSH-Schlüssel mit einer Passphrase geschützt ist, müssen Sie ebenfalls die Passphrase eingeben.
-
Verbindung zu einem anderen Port herstellen
Standardmäßig läuft SSH auf Port 22. Der SSH-Client nimmt beim Herstellen der Verbindung zum Remote-System den Standard-Portwert an. Wenn das Remote-System jedoch auf einem anderen Port auf SSH-Verkehr lauscht, funktioniert dies nicht. In einer solchen Situation müssen wir die Portnummer manuell angeben. Um den spezifischen Port anzugeben, verwenden Sie das -p-Flag:
|
1 |
ssh -p <port> <username>@<secondary_server_ip> |
Den Port jedes Mal manuell anzugeben, ist kontraproduktiv. Wir können den Standard-Portwert dauerhaft ändern. Öffnen Sie dazu die SSH-Konfigurationsdatei. Wenn die Datei nicht existiert, wird sie mit dem folgenden Befehl erstellt:
|
1 |
nano ~/.ssh/config |
Fügen Sie dann die folgenden Zeilen hinzu:
|
1 2 3 4 5 |
Host <remote_alias> HostName <remote_hostname> Port <port_value> |
-
Befehle auf dem Remote-Server ausführen
Nachdem die Verbindung hergestellt ist, wird jeder Befehl, den Sie im lokalen Terminal ausführen, an den Remote-Server gesendet. Jede erzeugte Ausgabe wird an das lokale Terminal zurückgesendet.
Wenn nur ein einzelner Befehl ausgeführt werden soll, können wir diesen ausführen, ohne uns vollständig über SSH anzumelden. Wir können den Befehl einfach nach der SSH-Verbindungsanweisung angeben:
|
1 |
ssh <username>@<secondary_server_ip> <command_to_run> |
-
Einen Schlüssel zu einem SSH-Agenten hinzufügen
Wenn der SSH-Schlüssel eine Passphrase hat, müssen Sie diese bei jeder Verbindung zum Remote-System eingeben. Dies ständig zu tun, ist kontraproduktiv. Wir können dies von einem SSH-Agenten erledigen lassen. Dies ist ein kleines Dienstprogramm, das den privaten Schlüssel speichert, nachdem Sie die Passphrase eingegeben haben. Der private Schlüssel ist dann während der Terminal-Sitzung verfügbar. Um den SSH-Agenten zu starten, führen Sie den folgenden Befehl aus:
|
1 |
eval $(ssh-agent) |

Das Programm läuft im Hintergrund. Sie müssen nur noch Ihren privaten Schlüssel zum Agenten hinzufügen. Führen Sie den folgenden Befehl aus:
|
1 |
ssh-add |

Geben Sie die Passphrase ein, um den Vorgang abzuschließen.
-
Weiterleitung von SSH-Anmeldedaten
Wir können SSH auch so konfigurieren, dass eine Verbindung von einem Server zu einem anderen ohne Passwort hergestellt wird. Dies kann sehr effizient sein, insbesondere wenn man mit zahlreichen Remote-Servern arbeitet. Um dies zu erreichen, müssen wir die SSH-Anmeldedaten weiterleiten. Die Weiterleitung von SSH-Anmeldedaten erfordert, dass der Remote-Server so konfiguriert ist, dass er eine Verbindung vom lokalen Rechner/Server akzeptiert. Dann müssen Sie sich nur noch mit dem ersten Server verbinden, und zwar unter Verwendung des -A Flags. Es leitet Ihre Anmeldedaten für die aktuelle Sitzung an die Server weiter:
|
1 |
ssh -A <username>@<secondary_server_ip> |
Remote-Server-Konfigurationen
Dieser Abschnitt enthält einige der gängigen serverseitigen Konfigurationen, die Ihnen helfen, die Serverantworten und die Verbindungssicherheit zu verbessern.
-
Deaktivieren der Passwort-Authentifizierung
Wenn die SSH-Schlüssel konfiguriert sind und die SSH-Verbindung wie erwartet funktioniert, kann die Passwort-Authentifizierung sicher deaktiviert werden. Die folgende Konfiguration verhindert, dass nach einem Passwort gefragt wird, wenn sich ein Benutzer über SSH verbindet. Öffnen Sie auf dem Remote-Server die sshd_config-Datei mit root/sudo-Rechten:
|
1 |
sudo nano /etc/ssh/sshd_config |
Suchen Sie als Nächstes nach dem Eintrag PasswordAuthentication. Wenn die Zeile auskommentiert ist, entfernen Sie das Kommentarzeichen. Ändern Sie den Wert auf no:
|
1 |
PasswordAuthentication no |

Speichern Sie die Datei und schließen Sie den Editor. Um die Änderungen wirksam zu machen, starten Sie den SSH-Dienst neu:
|
1 |
sudo service ssh restart |
Wenn das System CentOS/Fedora ist, verwenden Sie stattdessen den folgenden Befehl:
|
1 |
sudo service sshd restart |
-
Ändern des SSH-Ports
Wie bereits erwähnt, verwendet SSH Port 22 für den SSH-Verkehr. Einige Systemadministratoren empfehlen jedoch, einen anderen Port für SSH zuzuweisen. Dies kann helfen, automatisierte Bots zu blockieren, die den Port überfluten. Um den Port zu ändern, auf dem SSH lauscht, öffnen Sie die sshd_config-Datei:
|
1 |
sudo nano /etc/ssh/sshd_config |
Suchen Sie nach dem Eintrag Port. Wenn er auskommentiert ist, entfernen Sie das Kommentarzeichen. Ändern Sie dann den Wert in einen anderen Wert. Der Port-Wert ist eine vorzeichenlose 16-Bit-Ganzzahl (0-65535):
|
1 |
Port 1024 |

Speichern Sie die Datei und schließen Sie den Editor. Um die Änderung zu übernehmen, starten Sie den SSH-Daemon neu:
|
1 |
sudo service ssh restart |
Führen Sie unter CentOS/Fedora stattdessen den folgenden Befehl aus:
|
1 |
sudo service sshd restart |
-
Benutzerbeschränkung
Wir können konfigurieren, welche Benutzerkonten sich über SSH verbinden können. Dazu gehört auch die Anpassung der sshd_config Datei. Öffnen Sie die Datei mit sudo/root-Rechten:
|
1 |
sudo nano /etc/ssh/sshd_config |
Suchen Sie nach dem Eintrag AllowUsers. Fügen Sie die erlaubten Benutzer hinzu:
|
1 |
AllowUsers <user_1> <user_2> |

Speichern Sie die Datei und schließen Sie den Editor. Starten Sie den SSH-Daemon neu, damit die Änderungen wirksam werden:
|
1 |
sudo service ssh restart |
Führen Sie unter CentOS/Fedora stattdessen den folgenden Befehl aus:
|
1 |
sudo service sshd restart |
-
Gruppenbeschränkung
Ähnlich wie bei der Benutzerbeschränkung können wir auch festlegen, welche Benutzergruppe sich über SSH mit dem System verbinden kann. Öffnen Sie die sshd_config Datei:
|
1 |
sudo nano /etc/ssh/sshd_config |
Verwenden Sie den Eintrag AllowGroups, um eine bestimmte Benutzergruppe hinzuzufügen, die SSH verwenden darf:
|
1 |
AllowGroups <user_group> |

Speichern Sie die Datei und schließen Sie den Editor. Starten Sie den SSH-Daemon neu, damit die Änderungen wirksam werden:
|
1 |
sudo service ssh restart |
Führen Sie unter CentOS/Fedora stattdessen den folgenden Befehl aus:
|
1 |
sudo service sshd restart |
Beachten Sie, dass der SSH-Daemon neu gestartet werden muss, wenn ein Benutzer zur Benutzergruppe hinzugefügt oder daraus entfernt wird. Andernfalls werden die Gruppenänderungen nicht wirksam.
-
Deaktivieren des Root-Logins
Wenn Sie Zugriff auf einen Benutzer mit sudo-Rechten haben, wird empfohlen, den Root-Login über SSH zu deaktivieren. Öffnen Sie die sshd_config Datei:
|
1 |
sudo nano /etc/ssh/sshd_config |
Ändern Sie den Wert des Eintrags PermitRootLogin auf no:
|
1 |
PermitRootLogin no |

Speichern Sie die Datei und schließen Sie den Editor. Starten Sie den SSH-Daemon neu, damit die Änderung wirksam wird:
|
1 |
sudo service ssh restart |
Führen Sie unter CentOS/Fedora stattdessen den folgenden Befehl aus:
|
1 |
sudo service sshd restart |
-
Weiterleitung von X-Anwendungsanzeigen
Der SSH-Daemon kann auch die Anzeige von X-Anwendungen vom Server an den Client weiterleiten. Damit dies funktioniert, muss auf dem Remote-System jedoch ein X-Window-System konfiguriert sein. Die Funktion muss außerdem in der SSH-Konfiguration aktiviert werden. Öffnen Sie die SSH-Konfigurationsdatei:
|
1 |
sudo nano /etc/ssh/sshd_config |
Ändern Sie den Wert der Direktive X11Forwarding auf yes:
|
1 |
X11Forwarding yes |

Speichern Sie die Datei und schließen Sie den Editor. Starten Sie den SSH-Daemon neu, damit die Änderung wirksam wird:
|
1 |
sudo service ssh restart |
Führen Sie unter CentOS/Fedora stattdessen den folgenden Befehl aus:
|
1 |
sudo service sshd restart |
Client-Konfigurationen
In diesem Abschnitt werfen wir einen Blick auf einige der gängigen Konfigurationen des SSH-Clients.
-
Serverspezifische Verbindungsinformationen
Auf dem lokalen System können wir die Besonderheiten einer Remoteverbindung definieren. Alle Informationen werden in der Konfigurationsdatei gespeichert, die sich unter befindet.~/.ssh/config:
|
1 |
nano ~/.ssh/config |
Jeder Remote-Systemblock wird durch das Schlüsselwort Host gefolgt von einem Alias gekennzeichnet. Alle systemspezifischen Direktiven werden hier eingetragen. Beim Herstellen einer Verbindung zum Remote-System wendet SSH diese automatisch an. Eine ausführliche Erklärung der Konfiguration finden Sie in der Manpage:
|
1 |
man ssh_config |

Der Eintrag für eine Remoteverbindung hat folgende Struktur:
|
1 2 3 |
Host <remote_hostname> <directive> <value> |
-
Verbindungs-Timeout
Es kann vorkommen, dass die Verbindung zu SSH-Sitzungen getrennt wird, bevor Sie eine Aktion ausführen können. Wenn der Client keine Pakete an den Remote-Server sendet, kommt es nach einiger Zeit zu einem Verbindungs-Timeout. Um dies zu vermeiden, können wir den lokalen Client so konfigurieren, dass er ab und zu ein Paket sendet, um die Verbindung aufrechtzuerhalten.
Öffnen Sie die lokale Konfigurationsdatei:
|
1 |
nano ~/.ssh/config |
Fügen Sie unter dem Eintrag für die Remoteverbindung die Direktive hinzu.ServerAliveInterval gefolgt vom Paketintervall in Sekunden:
|
1 |
ServerAliveInterval 120 |

Speichern Sie die Datei und schließen Sie den Editor.
-
Deaktivieren der Host-Überprüfung
Standardmäßig meldet der SSH-Client bei jedem Verbindungsversuch mit einem neuen Server den Fingerabdruck des Remote-SSH-Daemons. Dies ist eine nützliche Funktion, um die Authentizität des Hosts zu überprüfen. Wenn ein böswilliger Akteur versucht, den Remote-Host zu fälschen, wird er als neuer Server angezeigt.
Das Deaktivieren dieser Funktion kann ein großes Sicherheitsrisiko darstellen. Generell wird empfohlen, diese Option aktiviert zu lassen. In bestimmten Situationen kann das Deaktivieren der Host-Überprüfung jedoch praktisch sein. Öffnen Sie die Konfigurationsdatei:
|
1 |
nano ~/.ssh/config |
Unter dem Remote-Host-Abschnitt fügen Sie die folgenden Direktiven hinzu:

|
1 2 3 |
StrictHostKeyChecking no UserKnownHostsFile /dev/null |
Die erste Direktive verhindert das automatische Hinzufügen neuer Hosts zur Liste der bekannten Hosts, die in der Datei known_hosts gespeichert ist. Die zweite Direktive dient dazu, nicht vor Änderungen zu warnen. Speichern Sie die Datei und schließen Sie den Editor.
-
Multiplexing von SSH über eine einzige TCP-Verbindung
Manchmal kann der Aufbau einer TCP-Verbindung recht viel Zeit in Anspruch nehmen. Wenn mehrere Verbindungen zu demselben Rechner hergestellt werden müssen, ist Multiplexing eine hervorragende Funktion, die Sie nutzen können. SSH-Multiplexing ermöglicht die Verwendung derselben TCP-Verbindung für mehrere SSH-Sitzungen. Es reduziert einen Teil der Arbeitslast, die für den Aufbau neuer Sitzungen erforderlich ist. Auch die Begrenzung der Anzahl der Verbindungen kann helfen.
Wir können eine Multiplex-Verbindung manuell einrichten oder SSH anweisen, sie zu verwenden, wann immer sie verfügbar ist. Hier konfigurieren wir SSH so, dass es den zweiten Weg wählt. Öffnen Sie die SSH-Konfigurationsdatei:
|
1 |
nano ~/.ssh/config |
Fügen Sie am Anfang der Datei eine Wildcard-Host-Definition hinzu. Dadurch wird sichergestellt, dass der nächste Satz von Direktiven auf alle Remoteverbindungen angewendet wird. Fügen Sie die folgenden Direktiven hinzu:
|
1 2 3 4 5 |
ControlMaster auto ControlPath ~/.ssh/multiplex/%r@%h:%p ControlPersist 1 |

Die erste Direktive weist SSH an, Multiplexing automatisch zu verwenden, wann immer es verfügbar ist. Die zweite Direktive legt den Pfad zum Control-Socket fest. Dieser Socket wird erstellt, wenn die erste Sitzung aufgebaut wird. Nachfolgende Sitzungen nutzen diesen Socket.
Die letzte Direktive weist SSH an, die anfängliche Master-Verbindung im Hintergrund laufen zu lassen. Sie bedeutet auch, dass TCP-Verbindungen automatisch eine Sekunde nach der letzten SSH-Sitzung beendet werden. Erstellen Sie als Nächstes das Verzeichnis, das wir in der Konfigurationsdatei deklariert haben:
|
1 |
mkdir -pv ~/.ssh/multiplex |
Schließlich sollte das Multiplexing aktiv sein.
SSH-Escape-Codes
Nach dem Herstellen einer Verbindung gibt es Möglichkeiten, das Verbindungsverhalten mithilfe von Escape-Codes zu steuern.
-
Verbindungsabbruch erzwingen
Stecken Sie in einer SSH-Sitzung fest? SSH-Sitzungen werden im Allgemeinen vom Server verwaltet. Wenn der Server Probleme hat, kann es frustrierend sein, in einer toten SSH-Sitzung festzustecken. Glücklicherweise bietet OpenSSH nützliche Steuerelemente, um den Verbindungsstatus clientseitig zu verwalten.
Drücken Sie ein paar Mal die Eingabetaste. Geben Sie dann den folgenden Befehl ein:
|
1 |
~. |
![]()
Hierbei ist ~ das Steuerzeichen. Nach dem Ausführen dieses Befehls vom Client aus sollte sich die Verbindung sofort schließen.
-
SSH-Hintergrundsitzung
Wir können eine SSH-Sitzung auch in den Hintergrund verschieben. Wenn sie in den Hintergrund verschoben wird, kehren Sie zur normalen Shell-Sitzung zurück. Sobald Ihre Arbeit beendet ist, können Sie wieder zur SSH-Shell zurückkehren. Beachten Sie, dass Sie eine ordnungsgemäße Timeout-Konfiguration benötigen, um ein Timeout zu vermeiden, während die SSH-Sitzung im Hintergrund bleibt. Um eine SSH-Sitzung in den Hintergrund zu verschieben, geben Sie das Steuerzeichen gefolgt von ein.Strg + Z:
|
1 |
~<Strg + Z> |

Wenn es sich um Ihre letzte Hintergrundaufgabe handelte, können Sie sie mit dem folgenden Befehl reaktivieren:
|
1 |
fg |
Wenn mehrere Hintergrundaufgaben vorhanden sind, können wir dies aus der Jobliste ermitteln:
|
1 |
jobs |

Um den Ziel-Job in den Vordergrund zu holen, notieren Sie sich den Job-Wert aus der ersten Spalte. Führen Sie dann den folgenden Befehl aus:
|
1 |
fg %<job_value> |
-
Ändern der Portweiterleitungskonfiguration
Mithilfe des Steuerungsmechanismus können wir Portweiterleitungsregeln im laufenden Betrieb ändern. Sobald die Verbindung hergestellt ist, können wir Portweiterleitungsregeln erstellen oder abbauen. Dies ist Teil der SSH-Befehlszeilenschnittstelle.
Um auf die SSH-Befehlszeilenschnittstelle zuzugreifen, führen Sie folgenden Befehl aus:
|
1 |
~C |
![]()
Um die verfügbaren Optionen aufzulisten, geben Sie den folgenden Befehl ein:
|
1 |
-h |
Wenn die Ausgabe zu minimal ist, versuchen Sie, die Ausführlichkeit mit dem folgenden Steuerungsbefehl zu erhöhen:
|
1 |
~v |
Nun, führen Sie den Befehl -h erneut aus:
|
1 |
-h |

Wie die Ausgabe erklärt, ist es ganz einfach, jede der Portweiterleitungen mit einem einfachen Befehl zu implementieren. Beispielsweise kann ein Tunnel auch mit dem Kill-Befehl zerstört werden, was durch K in der Befehlsliste gekennzeichnet ist.
Schlussgedanken
SSH begegnet einem recht häufig. Deshalb ist es sehr nützlich, SSH zu lernen. Unsere umfassende SSH-Übersicht deckt die wichtigsten SSH-Konfigurationen ab, die Benutzer kennen müssen, um SSH im Alltag zu nutzen. Sobald Sie diese beherrschen, sollten Sie in der Lage sein, mit fast allen SSH-Serverkonfigurationen zu arbeiten.
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.