SSH (SSH-Client ) ist ein Programm für den Fernzugriff auf eine Maschine, es ermöglicht einem Benutzer, Befehle auf einem entfernten Host auszuführen. Dies ist eine der am meisten empfohlenen Methoden zum Anmelden bei einem Remote-Host, da sie darauf ausgelegt ist, eine 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:
- Sie müssen den OpenSSH-Client auf Ihrem Linux-Desktop installiert haben.
- Verstehen Sie die allgemeinen Optionen, die für Remote-Verbindungen über ssh verwendet werden.
SSH-Client-Konfigurationsdateien
Nachfolgend sind die Speicherorte der SSH-Client-Konfigurationsdateien aufgeführt:
/etc/ssh/ssh_config
– Dies ist die standardmäßige, systemweite Konfigurationsdatei. Es enthält Einstellungen, die für alle Benutzer des SSH-Client-Rechners gelten.~/.ssh/config
oder$HOME/.ssh/config
– ist die benutzerspezifische/benutzerdefinierte Konfigurationsdatei. Es hat 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 mit Passwörtern authentifiziert, Sie können jedoch in 5 einfachen Schritten eine passwortlose ssh-Anmeldung mit ssh keygen einrichten.
Hinweis :Falls das Verzeichnis ~/.ssh
auf Ihrem Desktop-System nicht existiert, erstellen Sie es mit den folgenden Berechtigungen.
$ mkdir -p ~/.ssh $ chmod 0700 ~/.ssh
Die chmod Der obige Befehl impliziert, dass nur der Benutzer Lese-, Schreib- und Ausführungsberechtigungen für das Verzeichnis haben kann, wie es die SSH-Einstellungen erfordern.
So erstellen Sie eine benutzerspezifische SSH-Konfigurationsdatei
Diese Datei wird normalerweise nicht standardmäßig erstellt, daher müssen Sie sie nur mit Lese-/Schreibberechtigungen für den Benutzer erstellen.
$ touch ~/.ssh/config $ chmod 0700 ~/.ssh/config
Die obige Datei enthält Abschnitte, die durch Hostspezifikationen definiert sind, und ein Abschnitt wird nur auf Hosts angewendet, die mit einem der in der Spezifikation festgelegten Muster übereinstimmen.
Das herkömmliche Format von ~/.ssh/config
ist wie folgt, und alle Leerzeilen sowie Zeilen, die mit ‘#’
beginnen gelten als Kommentare:
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:
- Host host1 – ist eine Header-Definition für host1 , hier beginnt eine Hostspezifikation und endet mit der nächsten Header-Definition, Host host2 Abschnitt erstellen.
- host1 , host2 sind einfach Host-Aliase, die auf der Befehlszeile verwendet werden, sie sind nicht die tatsächlichen Hostnamen der Remote-Hosts.
- Die Konfigurationsoptionen wie ssh_option1=value1 , ssh_option2=Wert1 Wert2 gelten für einen übereinstimmenden Host und sollten für eine gut organisierte Formatierung eingerückt sein.
- Für eine Option wie ssh_option2=value1 value2 , der Wert Wert1 wird zuerst berücksichtigt, dann value2 .
- Die Header-Definition Host * (wobei
*
ein Muster ist – ein Platzhalter, der mit null oder mehr Zeichen übereinstimmt) wird mit null oder mehr Hosts übereinstimmen.
Unter Berücksichtigung des obigen Formats liest ssh die Konfigurationsdatei auf diese Weise. Wenn Sie einen ssh-Befehl ausführen, um remote auf host1 zuzugreifen so:
$ ssh host1
Der obige ssh-Befehl macht die folgenden Dinge:
- passen Sie den Host-Alias host1 an in der Konfigurationsdatei und wendet die Optionen an, die unter dem Definitionsheader Host host1 festgelegt sind .
- bewegt sich dann zum nächsten Hostabschnitt, Host host2 und stellt fest, dass der auf der Befehlszeile angegebene Name nicht übereinstimmt, daher werden hier keine Optionen verwendet.
- Es geht weiter zum letzten Abschnitt, Host * , die mit allen Hosts übereinstimmt. Hier werden alle Optionen in diesem Abschnitt auf die Hostverbindung angewendet. Aber es kann keine Werte von Optionen überschreiben, die bereits in den vorherigen Abschnitten verwendet wurden.
- 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 detaillierte Erklärung der obigen ssh-Konfigurationsoptionen.
- Hostname – Definiert den echten Hostnamen zum Einloggen, alternativ können Sie eine numerische IP-Adresse verwenden, es ist auch erlaubt (sowohl auf der Kommandozeile als auch in HostName Spezifikationen).
- Benutzer – gibt den Benutzer an, als der man sich anmeldet.
- 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.
- Protokoll – Diese Option definiert die Protokollversionen, die ssh in bevorzugter Reihenfolge unterstützen soll. Die üblichen Werte sind ‘1‘ und ‘2’ , müssen mehrere Versionen durch Kommas getrennt werden.
- Identitätsdatei – gibt eine Datei an, aus der die DSA-, Ed25519-, RSA- oder ECDSA-Authentifizierungsidentität des Benutzers gelesen wird.
- ForwardX11 – legt fest, ob X11-Verbindungen automatisch über den sicheren Kanal umgeleitet und DISPLAY gesetzt werden. Es hat zwei mögliche Werte „Ja“ oder „nein“ .
- Komprimierung – Es wird verwendet, um die Komprimierung während der Remote-Verbindung mit dem „Ja“ einzustellen Wert. Der Standardwert ist „nein“ .
- ServerAliveInterval – legt ein Timeout-Intervall in Sekunden fest, nach dem, wenn keine Antwort (oder Daten) vom Server empfangen wurden, 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.
- ServerAliveCountMax – legt die Anzahl der Server-Alive-Meldungen fest, die gesendet werden dürfen, ohne dass ssh eine Antwort vom Server erhält.
- LogLevel – definiert die Ausführlichkeitsstufe, die beim Protokollieren von Nachrichten von ssh verwendet wird. Zulässige Werte sind: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 obigen Konfigurationsdatei definiert ist, würden wir normalerweise den folgenden Befehl eingeben:
$ ssh -i ~/.ssh/id_rsa -p 22 [email protected]
Mit der Verwendung der ssh-Client-Konfigurationsdatei können wir jedoch einfach den folgenden Befehl eingeben:
$ ssh centos7
Weitere Optionen und Verwendungsbeispiele finden Sie in der Manpage für die SSH-Client-Konfiguration:
$man ssh_config
Das war es fürs Erste, in diesem Handbuch haben wir Ihnen erklärt, 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 antworten.