GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Anleitung für Anfänger zu SSH für Remote-Verbindungen unter Linux

Eines der attraktivsten Merkmale von Linux ist die Fähigkeit, einen Computer geschickt zu bedienen, indem nichts als Befehle in die Tastatur eingegeben werden – und noch besser, dies auf Computern überall auf der Welt tun zu können. Dank OpenSSH können POSIX-Benutzer eine sichere Shell auf jedem Computer öffnen, auf den sie Zugriff haben, und sie von einem entfernten Standort aus verwenden. Es ist eine tägliche Aufgabe für viele Linux-Benutzer, aber es kann für jemanden verwirrend sein, der es noch nicht ausprobiert hat. In diesem Artikel wird erläutert, wie Sie zwei Computer für Secure Shell (SSH)-Verbindungen konfigurieren und ohne Kennwort eine sichere Verbindung zwischen ihnen herstellen können.

Terminologie

Wenn über mehr als einen Computer gesprochen wird, kann es verwirrend sein, einen vom anderen zu unterscheiden. Die IT-Community hat etablierte Begriffe, um die Beschreibungen des Prozesses der Vernetzung von Computern zu verdeutlichen.

  • Dienst: Ein Dienst ist eine Software, die im Hintergrund ausgeführt wird, sodass sie von anderen Computern als dem, auf dem sie installiert ist, verwendet werden kann. Beispielsweise hostet ein Webserver einen Web-Sharing-Dienst . Der Begriff impliziert (besteht aber nicht darauf), dass es sich um Software ohne grafische Oberfläche handelt.
  • Host: Ein Host ist ein beliebiger Computer. In der IT werden Computer als Host bezeichnet weil technisch gesehen jeder Computer eine Anwendung hosten kann, die für einen anderen Computer nützlich ist. Sie betrachten Ihren Laptop vielleicht nicht als "Host", aber Sie führen wahrscheinlich einen Dienst aus, der für Sie, Ihr Mobiltelefon oder einen anderen Computer nützlich ist.
  • Lokal: Der lokale Computer ist derjenige, den Sie oder eine Software verwenden. Jeder Computer bezeichnet sich selbst als localhost , zum Beispiel.
  • Fernbedienung: Ein Remote-Computer ist ein Computer, vor dem Sie sich weder physisch befinden noch physisch verwenden. Es ist ein Computer in einer Fernbedienung Standort.

Nachdem die Terminologie geklärt ist, können Sie beginnen.

SSH auf jedem Host aktivieren

Damit zwei Computer über SSH verbunden werden können, muss auf jedem Host SSH installiert sein. SSH besteht aus zwei Komponenten:dem Befehl, den Sie auf Ihrem lokalen Rechner verwenden, um eine Verbindung herzustellen, und einem Server um eingehende Verbindungsanfragen anzunehmen. Auf einigen Computern sind ein oder beide Teile von SSH bereits installiert. Die Befehle variieren je nach System, um zu überprüfen, ob Sie sowohl den Befehl als auch den Server installiert haben, daher ist die einfachste Methode, nach den relevanten Konfigurationsdateien zu suchen:

$ file /etc/ssh/ssh_config
/etc/ssh/ssh_config: ASCII text

Sollte dies ein No such file or directory zurückgeben Fehler, dann haben Sie den SSH-Befehl nicht installiert.

Führen Sie eine ähnliche Überprüfung für den SSH-Dienst durch (beachten Sie die d im Dateinamen):

$ file /etc/ssh/sshd_config
/etc/ssh/sshd_config: ASCII text

Installieren Sie je nach Bedarf das eine oder andere:

$ sudo dnf install openssh-clients openssh-server

Aktivieren Sie auf dem Remote-Computer den SSH-Dienst mit systemd:

$ sudo systemctl enable --now sshd

Alternativ können Sie den SSH-Dienst in den Systemeinstellungen aktivieren auf GNOME oder Systemeinstellungen auf macOS. Auf dem GNOME-Desktop befindet es sich unter Sharing Panel:

Starten Sie eine sichere Shell

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Nachdem Sie SSH auf dem Remote-Computer installiert und aktiviert haben, können Sie sich testweise mit einem Passwort anmelden. Um auf den Remote-Computer zuzugreifen, müssen Sie über ein Benutzerkonto und ein Passwort verfügen.

Ihr Remote-Benutzer muss nicht mit Ihrem lokalen Benutzer identisch sein. Sie können sich als beliebiger Benutzer auf dem Remote-Computer anmelden, solange Sie das Kennwort dieses Benutzers kennen. Zum Beispiel bin ich sethkenlon auf meinem Arbeitscomputer, aber ich bin seth auf meinem Personalcomputer. Wenn ich mich auf meinem persönlichen Computer befinde (was ihn zu meinem aktuellen lokalen Computer macht) und ich eine SSH-Verbindung zu meinem Arbeitscomputer herstellen möchte, kann ich dies tun, indem ich mich als sethkenlon identifiziere und mein Arbeitskennwort verwenden.

Um eine SSH-Verbindung mit dem Remote-Computer herzustellen, müssen Sie dessen IP-Adresse (Internet Protocol) oder seinen auflösbaren Hostnamen kennen. Um die IP-Adresse des Remote-Rechners zu finden, verwenden Sie ip Befehl (auf dem entfernten Computer):

$ ip addr show | grep "inet "
inet 127.0.0.1/8 scope host lo
inet 10.1.1.5/27 brd 10.1.1.31 [...]

Wenn der entfernte Computer nicht über die ip Befehl, versuchen Sie es mit ifconfig stattdessen (oder sogar ipconfig unter Windows).

Die Adresse 127.0.0.1 ist etwas Besonderes und ist tatsächlich die Adresse von localhost . Es ist eine "Loopback"-Adresse, die Ihr System verwendet, um sich selbst zu erreichen. Das ist nicht sinnvoll, wenn Sie sich bei einem Remote-Computer anmelden, daher lautet die korrekte IP-Adresse des Remote-Computers in diesem Beispiel 10.1.1.5. Im wirklichen Leben würde ich das wissen, weil mein lokales Netzwerk das Subnetz 10.1.1.0 verwendet. Wenn sich der Remote-Computer in einem anderen Netzwerk befindet, kann die IP-Adresse fast alles sein (allerdings niemals 127.0.0.1), und wahrscheinlich ist ein spezielles Routing erforderlich, um ihn durch verschiedene Firewalls zu erreichen. Angenommen, Ihr Remote-Computer befindet sich im selben Netzwerk, aber wenn Sie daran interessiert sind, Computer zu erreichen, die weiter entfernt sind als Ihr eigenes Netzwerk, lesen Sie meinen Artikel über das Öffnen von Ports in Ihrer Firewall.

Wenn Sie den Remote-Rechner über seine IP-Adresse oder anpingen können seinen Hostnamen und haben Sie ein Login-Konto darauf, dann können Sie sich per SSH darauf einloggen:

$ ping -c1 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
$ ping -c1 akiton.local
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.

Das ist ein Erfolg. Melden Sie sich jetzt mit SSH an:

$ whoami
seth
$ ssh [email protected]
bash$ whoami
sethkenlon

Die Testanmeldung funktioniert, jetzt können Sie also die passwortlose Anmeldung aktivieren.

Erstellen Sie einen SSH-Schlüssel

Um sich ohne Passwort sicher an einem anderen Computer anzumelden, benötigen Sie einen SSH-Schlüssel. Möglicherweise haben Sie bereits einen SSH-Schlüssel, aber es schadet nicht, einen neuen zu erstellen. Ein SSH-Schlüssel beginnt sein Leben auf Ihrem lokalen Computer. Es besteht aus zwei Komponenten:einem privaten Schlüssel, den Sie niemals mit irgendjemandem oder irgendetwas teilen, und einem öffentlichen Schlüssel, den Sie auf jeden Remote-Computer kopieren, auf den Sie passwortlosen Zugriff haben möchten.

Einige Leute erstellen einen SSH-Schlüssel und verwenden ihn für alles, von der Remote-Anmeldung bis zur GitLab-Authentifizierung. Ich verwende jedoch unterschiedliche Schlüssel für unterschiedliche Aufgabengruppen. Zum Beispiel verwende ich einen Schlüssel zu Hause, um mich bei lokalen Computern zu authentifizieren, einen anderen Schlüssel, um mich bei Webservern zu authentifizieren, die ich betreue, einen separaten Schlüssel für Git-Hosts, einen anderen für Git-Repositories, die ich hoste, und so weiter. In diesem Beispiel erstelle ich einen eindeutigen Schlüssel zur Verwendung auf Computern in meinem lokalen Netzwerk.

Um einen neuen SSH-Schlüssel zu erstellen, verwenden Sie ssh-keygen Befehl:

$ ssh-keygen -t ed25519 -f ~/.ssh/lan

Das -t Option steht für Typ und stellt sicher, dass die für den Schlüssel verwendete Verschlüsselung höher als die Standardeinstellung ist. Das -f Option steht für Datei und legt den Dateinamen und Speicherort des Schlüssels fest. Sie werden aufgefordert, ein Passwort für Ihren SSH-Schlüssel zu erstellen. Sie sollten ein Passwort für den Schlüssel erstellen. Das bedeutet, dass Sie ein Passwort eingeben müssen, wenn Sie den Schlüssel verwenden, aber dieses Passwort bleibt lokal und wird nicht über das Netzwerk übertragen. Nachdem Sie diesen Befehl ausgeführt haben, bleibt Ihnen ein privater SSH-Schlüssel namens lan und einen öffentlichen SSH-Schlüssel namens lan.pub .

Um den öffentlichen Schlüssel auf Ihren Remote-Computer zu übertragen, verwenden Sie die ssh-copy-id . Damit dies funktioniert, müssen Sie überprüfen, ob Sie SSH-Zugriff auf den Remote-Computer haben. Wenn Sie sich nicht mit einem Passwort beim Remote-Host anmelden können, können Sie auch keine passwortlose Anmeldung einrichten:

$ ssh-copy-id -i ~/.ssh/lan.pub [email protected]

Während dieses Vorgangs werden Sie zur Eingabe Ihres Anmeldekennworts auf dem Remote-Host aufgefordert.

Versuchen Sie bei Erfolg erneut, sich anzumelden, diesmal jedoch mit -i Option, um den SSH-Befehl auf den entsprechenden Schlüssel zu verweisen (lan , in diesem Beispiel):

$ ssh -i ~/.ssh/lan [email protected]
bash$ whoami
sethkenlon

Wiederholen Sie diesen Vorgang für alle Computer in Ihrem Netzwerk, und Sie können jeden Host durchsuchen, ohne jemals wieder über Passwörter nachdenken zu müssen. Sobald Sie die passwortlose Authentifizierung eingerichtet haben, können Sie die Datei /etc/ssh/sshd_config bearbeiten Datei, um die Passwortauthentifizierung zu verbieten. Dadurch wird verhindert, dass jemand SSH verwendet, um sich bei einem Computer zu authentifizieren, es sei denn, er hat Ihren privaten Schlüssel. Öffnen Sie dazu /etc/ssh/sshd_config in einem Texteditor mit sudo Berechtigungen und suchen Sie nach der Zeichenfolge PasswordAuthentication . Ändern Sie die Standardzeile wie folgt:

PasswordAuthentication no

Speichern Sie es und starten Sie den SSH-Server neu (oder starten Sie einfach neu):

$ sudo systemctl restart sshd && echo "OK"
OK
$

SSH jeden Tag verwenden

OpenSSH verändert Ihre Sicht auf Computer. Sie sind nicht mehr nur an den Computer vor Ihnen gebunden. Mit SSH haben Sie Zugriff auf jeden Computer in Ihrem Haus oder Server, auf denen Sie Konten haben, und sogar auf Mobilgeräte und Geräte des Internets der Dinge. Durch das Freischalten der Leistung von SSH wird auch die Leistung des Linux-Terminals freigeschaltet. Wenn Sie SSH nicht jeden Tag verwenden, fangen Sie jetzt an. Machen Sie es sich bequem, sammeln Sie Schlüssel, leben Sie sicherer und erweitern Sie Ihre Welt.


Linux
  1. Eine Anleitung zum Linux-Terminal für Anfänger

  2. Was ist Linux? Ein Leitfaden für nicht-technische Benutzer

  3. Anfängerleitfaden zur Installation von Pop!_OS Linux

  4. SSH-Lesezeichen-Manager für Linux

  5. Linux-Befehl zum Warten auf das Hochfahren eines SSH-Servers

So führen Sie SSH in ein bestimmtes Verzeichnis unter Linux aus

Ausführen von Befehlen auf Remote-Linux-Systemen über SSH

So richten Sie die Multi-Faktor-Authentifizierung für SSH unter Linux ein

Kurzanleitung zu Ansible für Linux-Systemadministratoren

So führen Sie eine Remote-Linux-Sicherung mit SSH durch

Anleitung zum Einrichten eines SFTP-Servers unter Linux