Website-Suche

So konfigurieren Sie benutzerdefinierte SSH-Verbindungen, um den Fernzugriff zu vereinfachen


SSH (SSH-Client) ist ein Programm für den Fernzugriff auf eine Maschine. Es ermöglicht einem Benutzer, Befehle auf einem Remote-Host auszuführen. Dies ist eine der am meisten empfohlenen Methoden zum Anmelden bei einem Remote-Host, da sie darauf ausgelegt ist, sichere verschlüsselte Kommunikation zwischen zwei nicht vertrauenswürdigen Hosts über ein unsicheres Netzwerk bereitzustellen.

SSH verwendet sowohl eine systemweite als auch eine benutzerspezifische (benutzerdefinierte) Konfigurationsdatei. In diesem Tutorial erklären wir, wie Sie eine benutzerdefinierte SSH-Konfigurationsdatei erstellen und bestimmte Optionen verwenden, um eine Verbindung zu Remote-Hosts herzustellen.

Anforderungen:

  1. Sie müssen den OpenSSH-Client auf Ihrem Linux-Desktop installiert haben.
  2. Machen Sie sich mit den allgemeinen Optionen vertraut, die für Remoteverbindungen über SSH verwendet werden.

SSH-Client-Konfigurationsdateien

Nachfolgend sind die Speicherorte der SSH-Client-Konfigurationsdateien aufgeführt:

  1. /etc/ssh/ssh_config – Dies ist die standardmäßige, systemweite Konfigurationsdatei. Es enthält Einstellungen, die für alle Benutzer des SSH-Client-Computers gelten.
  2. ~/.ssh/config oder $HOME/.ssh/config – ist die benutzerspezifische/benutzerdefinierte Konfigurationsdatei. Es verfügt über Konfigurationen, die für einen bestimmten Benutzer gelten. Es überschreibt daher die Standardeinstellungen in der systemweiten Konfigurationsdatei. Dies ist die Datei, die wir erstellen und verwenden werden.

Standardmäßig werden Benutzer in SSH mithilfe von Passwörtern authentifiziert. Sie können jedoch in 5 einfachen Schritten eine passwortlose SSH-Anmeldung mit SSH Keygen einrichten.

Hinweis: Falls das Verzeichnis ~/.ssh nicht auf Ihrem Desktop-System vorhanden ist, erstellen Sie es mit den folgenden Berechtigungen.


mkdir -p ~/.ssh
chmod 0700 ~/.ssh   

Der obige Befehl chmod impliziert, dass nur der Benutzer über Lese-, Schreib- und Ausführungsberechtigungen für das Verzeichnis verfügen kann, wie in den SSH-Einstellungen erforderlich.

So erstellen Sie eine benutzerspezifische SSH-Konfigurationsdatei

Diese Datei wird normalerweise nicht standardmäßig erstellt, daher müssen Sie sie nur mit den Lese-/Schreibberechtigungen für den Benutzer erstellen.


touch ~/.ssh/config
chmod 0700 ~/.ssh/config

Die obige Datei enthält Abschnitte, die durch Hosts-Spezifikationen definiert sind, und ein Abschnitt wird nur auf Hosts angewendet, die einem der in der Spezifikation festgelegten Muster entsprechen.

Das herkömmliche Format von ~/.ssh/config ist wie folgt, und alle Leerzeilen sowie Zeilen, die mit ‘#’ beginnen, werden als Kommentare betrachtet:


Host    host1
	ssh_option1=value1
	ssh_option2=value1 value2
	ssh_option3=value1 

Host    host2
	ssh_option1=value1
	ssh_option2=value1 value2

Host  *
	ssh_option1=value1
	ssh_option2=value1 value2

Aus dem obigen Format:

  1. Host host1 – ist eine Header-Definition für host1. Hier beginnt eine Host-Spezifikation und endet mit der nächsten Header-Definition, der Erstellung von Host host2 ein Abschnitt.
  2. host1, host2 sind lediglich Host-Aliase zur Verwendung in der Befehlszeile, es handelt sich nicht um die tatsächlichen Hostnamen der Remote-Hosts.
  3. Die Konfigurationsoptionen wie ssh_option1=value1, ssh_option2=value1 value2 gelten für einen übereinstimmenden Host und sollten für eine gut organisierte Formatierung eingerückt werden.
  4. Bei einer Option wie ssh_option2=value1 value2 wird zuerst der Wert value1 berücksichtigt, dann value2.
  5. Die Header-Definition Host * (wobei * ein Muster ist – ein Platzhalter, der mit null oder mehr Zeichen übereinstimmt) stimmt mit null oder mehr Hosts überein.

Unter Berücksichtigung des oben genannten Formats liest ssh die Konfigurationsdatei auf diese Weise. Wenn Sie einen SSH-Befehl ausführen, um remote auf host1 zuzugreifen, gehen Sie wie folgt vor:


ssh host1

Der obige SSH-Befehl führt Folgendes aus:

  1. stimmt mit dem Host-Alias host1 in der Konfigurationsdatei überein und wendet die im Definitionsheader Host host1 festgelegten Optionen an.
  2. Dann geht es zum nächsten Host-Abschnitt, Host host2, und stellt fest, dass der in der Befehlszeile angegebene Name nicht übereinstimmt, sodass von hier aus keine Optionen verwendet werden.
  3. Es geht weiter zum letzten Abschnitt, Host *, der alle Hosts abgleicht. Hier werden alle Optionen in diesem Abschnitt auf die Hostverbindung angewendet. Es können jedoch keine Werte von Optionen überschrieben werden, die bereits in den vorherigen Abschnitten verwendet wurden.
  4. Das Gleiche gilt für host2.

So verwenden Sie eine benutzerspezifische SSH-Konfigurationsdatei

Sobald Sie verstanden haben, wie die SSH-Client-Konfigurationsdatei funktioniert, können Sie sie wie folgt erstellen. Denken Sie daran, Optionen und Werte (Host-Aliase, Portnummern, Benutzernamen usw.) zu verwenden, die für Ihre Serverumgebung gelten.

Öffnen Sie die Konfigurationsdatei mit Ihrem bevorzugten Editor:


vi ~/.ssh/config

Und definieren Sie die notwendigen Abschnitte:


Host fedora25
        HostName 192.168.56.15
        Port 22
        ForwardX11 no

Host centos7
        HostName 192.168.56.10
        Port 22
        ForwardX11 no

Host ubuntu
        HostName 192.168.56.5
        Port 2222
        ForwardX11 yes

Host *
        User tecmint
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
        Compression yes
        ServerAliveInterval 60
        ServerAliveCountMax 20
        LogLevel INFO

Eine ausführliche Erläuterung der oben genannten SSH-Konfigurationsoptionen.

  1. HostName – definiert den tatsächlichen Hostnamen, bei dem Sie sich anmelden möchten. Alternativ können Sie auch eine numerische IP-Adresse verwenden. Dies ist ebenfalls zulässig (sowohl in der Befehlszeile als auch in den HostName-Spezifikationen). .
  2. Benutzer – gibt den Benutzer an, als der Sie sich anmelden möchten.
  3. Port – legt die Portnummer für die Verbindung zum Remote-Host fest, der Standardwert ist 22. Verwenden Sie die in der SSHD-Konfigurationsdatei des Remote-Hosts konfigurierte Portnummer.
  4. Protokoll – Diese Option definiert die Protokollversionen, die SSH in der Reihenfolge ihrer Präferenz unterstützen soll. Die üblichen Werte sind ‘1’ und ‘2’, mehrere Versionen müssen durch Kommas getrennt werden.
  5. IdentityFile – gibt eine Datei an, aus der die DSA-, Ed25519-, RSA- oder ECDSA-Authentifizierungsidentität des Benutzers gelesen wird.
  6. ForwardX11 – definiert, ob X11-Verbindungen automatisch über den sicheren Kanal und den DISPLAY-Satz umgeleitet werden. Es gibt zwei mögliche Werte: „ja“ oder „nein“.
  7. Komprimierung – wird verwendet, um die Komprimierung während der Remote-Verbindung mit dem Wert „Ja“ festzulegen. Der Standardwert ist „Nein“.
  8. ServerAliveInterval – legt ein Timeout-Intervall in Sekunden fest, nach dessen Ablauf, wenn keine Antwort (oder Daten) vom Server empfangen wurde, ssh eine Nachricht über den verschlüsselten Kanal sendet, um eine Antwort vom Server anzufordern. Der Standardwert ist 0, was bedeutet, dass keine Nachrichten an den Server gesendet werden, oder 300, wenn die Option BatchMode definiert wurde.
  9. ServerAliveCountMax – legt die Anzahl der Server-Alive-Nachrichten fest, die gesendet werden dürfen, ohne dass SSH eine Antwort vom Server erhält.
  10. LogLevel – definiert die Ausführlichkeitsstufe, die beim Protokollieren von Nachrichten von SSH verwendet wird. Zu den zulässigen Werten gehören: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 und DEBUG3. Und der Standardwert ist INFO.

Die Standardmethode zum Herstellen einer Verbindung zu einem beliebigen Remote-Linux-Host (CentOS 7 – in meinem Fall), die in Abschnitt zwei der Konfigurationsdatei oben definiert ist, würden wir normalerweise den folgenden Befehl eingeben:


ssh -i ~/.ssh/id_rsa -p 22 [email 

Mithilfe der SSH-Client-Konfigurationsdatei können wir jedoch einfach den folgenden Befehl eingeben:


ssh centos7 

Weitere Optionen und Anwendungsbeispiele finden Sie in der Manpage zur SSH-Client-Konfiguration:


$man ssh_config

Das war's fürs Erste. In dieser Anleitung erklären wir Ihnen, wie Sie eine benutzerspezifische (benutzerdefinierte) SSH-Client-Konfigurationsdatei unter Linux verwenden. Verwenden Sie das unten stehende Feedback-Formular, um uns bezüglich dieses Artikels zu schreiben.