Android

Verwenden Sie die SSH-Konfigurationsdatei

Fritz!Box: VPN Tunnel einrichten

Fritz!Box: VPN Tunnel einrichten

Inhaltsverzeichnis:

Anonim

Eine Möglichkeit wäre, einen Bash-Alias ​​für jede Remoteserververbindung zu erstellen. Es gibt jedoch eine andere, viel bessere und einfachere Lösung für dieses Problem. Mit OpenSSH können Sie eine benutzerspezifische Konfigurationsdatei einrichten, in der Sie verschiedene SSH-Optionen für jeden Remote-Computer speichern können, zu dem Sie eine Verbindung herstellen.

Dieses Handbuch behandelt die Grundlagen der SSH-Client-Konfigurationsdatei und erläutert einige der häufigsten Konfigurationsoptionen.

Voraussetzungen

Wir gehen davon aus, dass Sie ein Linux- oder MacOS-System mit installiertem OpenSSH-Client verwenden.

Speicherort der SSH-Konfigurationsdatei

Die clientseitige OpenSSH-Konfigurationsdatei heißt config und wird im Verzeichnis .ssh unter dem .ssh des Benutzers gespeichert.

Das Verzeichnis ~/.ssh wird automatisch erstellt, wenn der Benutzer den Befehl ssh zum ersten Mal ~/.ssh . Wenn das Verzeichnis auf Ihrem System nicht vorhanden ist, erstellen Sie es mit dem folgenden Befehl:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Standardmäßig ist die SSH-Konfigurationsdatei möglicherweise nicht vorhanden, sodass Sie sie möglicherweise mit dem Befehl touch erstellen müssen:

touch ~/.ssh/config

Diese Datei darf nur für den Benutzer lesbar und beschreibbar und für andere nicht zugänglich sein:

chmod 600 ~/.ssh/config

Struktur und Muster der SSH-Konfigurationsdatei

Die SSH-Konfigurationsdatei hat die folgende Struktur:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

Der Inhalt der SSH-Client-Konfigurationsdatei ist in Zeilengruppen (Abschnitte) unterteilt. Jede Zeilengruppe beginnt mit der Host Direktive und enthält bestimmte SSH-Optionen, die beim Herstellen einer Verbindung mit dem Remote-SSH-Server verwendet werden.

Einrückungen sind nicht erforderlich, werden jedoch empfohlen, da sie das Lesen der Datei erleichtern.

Die Host Direktive kann ein Muster oder eine durch Leerzeichen getrennte Liste von Mustern enthalten. Jedes Muster kann null oder mehr Nicht-Leerzeichen oder einen der folgenden Musterbezeichner enthalten:

  • * - Stimmt mit null oder mehr Zeichen überein. Beispielsweise stimmt Host * mit allen Hosts überein, während 192.168.0.* Hosts im Subnetz 192.168.0.0/24 übereinstimmt. ? - Entspricht genau einem Zeichen. Das Muster Host 10.10.0.? stimmt mit allen Hosts in 10.10.0. Angebot. ! - Bei Verwendung am Anfang eines Musters wird die Übereinstimmung annulliert. Beispielsweise Host 10.10.0.* !10.10.0.5 mit jedem Host im Subnetz 10.10.0.5 außer 10.10.0.5 .

Der SSH-Client liest die Konfigurationsdatei Zeilengruppe für Zeilengruppe, und wenn mehrere Muster übereinstimmen, haben die Optionen aus der ersten übereinstimmenden Zeilengruppe Vorrang. Daher sollten am Anfang der Datei mehr hostspezifische Deklarationen und am Ende der Datei allgemeinere Überschreibungen angegeben werden.

Sie finden eine vollständige Liste der verfügbaren ssh-Optionen, indem Sie man ssh_config in Ihr Terminal man ssh_config oder die man-Seite ssh_config besuchen.

Die SSH-Konfigurationsdatei wird auch von anderen Programmen wie scp , sftp und rsync gelesen.

Beispiel für eine SSH-Konfigurationsdatei

Nachdem wir uns nun mit den Grundlagen der SSH-Konfigurationsdatei befasst haben, sehen wir uns das folgende Beispiel an.

In der Regel geben Sie beim Herstellen einer Verbindung zu einem Remoteserver über SSH den Remotebenutzernamen, den Hostnamen und den Port an. Um sich beispielsweise als Benutzer mit dem Namen john bei einem Host mit dem Namen dev.example.com an Port 2322 über die Befehlszeile dev.example.com , geben Sie dev.example.com :

ssh [email protected] -p 2322

Um mit den gleichen Optionen wie im obigen Befehl eine Verbindung zum Server "~/.ssh/config , geben Sie einfach ssh dev und "~/.ssh/config die folgenden Zeilen in Ihre "~/.ssh/config -Datei ein:

~ /.ssh / config

Host dev HostName dev.example.com User john Port 2322

Wenn Sie nun ssh dev eingeben, liest der ssh-Client die Konfigurationsdatei und verwendet die für den dev Host angegebenen Verbindungsdetails:

ssh dev

Beispiel für eine gemeinsam genutzte SSH-Konfigurationsdatei

In diesem Beispiel finden Sie detailliertere Informationen zu den Hostmustern und zur Priorität der Optionen.

Nehmen wir die folgende Beispieldatei:

Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes

  • Wenn Sie ssh targaryen , liest der ssh-Client die Datei und wendet die Optionen der ersten Übereinstimmung an, nämlich Host targaryen . Dann prüft es die nächsten Strophen nacheinander auf ein passendes Muster. Das nächste passende ist Host * !martell (dh alle Hosts außer martell ) und wendet die Verbindungsoption aus dieser martell . Die letzte Definition Host * stimmt ebenfalls überein, aber der ssh-Client Host targaryen nur die Option Compression da die Option User bereits in der Host targaryen definiert ist.

    Die vollständige Liste der Optionen, die bei der ssh targaryen lautet wie folgt:

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    Beim Ausführen von ssh tyrell die entsprechenden ssh tyrell : Host tyrell , Host *ell , Host * !martell und Host * . In diesem Fall werden folgende Optionen verwendet:

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    Für alle anderen Verbindungen verwendet der ssh-Client die in den Abschnitten Host * !martell und Host * angegebenen Optionen.

Überschreiben Sie die SSH-Konfigurationsdateioption

Der ssh-Client liest seine Konfiguration in der folgenden Rangfolge:

  1. Optionen, die über die Befehlszeile angegeben werden. Optionen, die in der ~/.ssh/config definiert sind. Optionen, die in der Datei /etc/ssh/ssh_config .

Host dev HostName dev.example.com User john Port 2322

und Sie möchten alle anderen Optionen verwenden, aber als Benutzer root anstelle von john verbinden. john einfach den Benutzer in der Befehlszeile an:

ssh -o "User=root" dev

Mit der Option -F ( configfile ) können Sie eine alternative Konfigurationsdatei für jeden Benutzer angeben.

Verwenden Sie Folgendes, um den ssh Client anzuweisen, alle in der ssh-Konfigurationsdatei angegebenen Optionen zu ignorieren:

ssh -F /dev/null [email protected]

Fazit

Wir haben Ihnen gezeigt, wie Sie Ihre Benutzer-SSH-Konfigurationsdatei konfigurieren. Möglicherweise möchten Sie auch eine SSH-Schlüssel-basierte Authentifizierung einrichten und eine Verbindung zu Ihren Linux-Servern herstellen, ohne ein Kennwort einzugeben.

Standardmäßig überwacht SSH Port 22. Durch Ändern des Standard-SSH-Ports wird Ihrem Server eine zusätzliche Sicherheitsebene hinzugefügt, indem das Risiko automatisierter Angriffe verringert wird.

SSH-Terminal