Einführung
Ein unverzichtbares Werkzeug, das ein Systemadministrator beherrschen muss, ist SSH.
SSH oder Secure Shell ist ein Protokoll, das verwendet wird, um sicher auf entfernte Systeme zuzugreifen. Es ist der häufigste Weg, um auf entfernte Linux-Server zuzugreifen.
In diesem Leitfaden werden wir besprechen, wie man SSH verwendet, um eine Verbindung zu einem entfernten System herzustellen.
Deployen Sie Ihre Frontend-Anwendungen von GitHub mit DigitalOcean App Platform. Lassen Sie DigitalOcean sich auf das Skalieren Ihrer App konzentrieren.
Kernsyntax
Um eine Verbindung zu einem entfernten System unter Verwendung von SSH herzustellen, werden wir das ssh
-Befehl verwenden.
Wenn Sie Windows verwenden, müssen Sie eine Version von OpenSSH installieren, um aus einem Terminal heraus eine Verbindung über ssh
herstellen zu können. Wenn Sie lieber mit PowerShell arbeiten, können Sie Microsofts Dokumentation folgen, um OpenSSH zu PowerShell hinzuzufügen. Wenn Sie lieber eine vollständige Linux-Umgebung zur Verfügung haben möchten, können Sie WSL einrichten, das Windows-Subsystem für Linux, das standardmäßig ssh
beinhaltet. Schließlich können Sie als leichtgewichtige dritte Option Git für Windows installieren, das eine native Windows-Bash-Umgebung bietet, die den ssh
-Befehl enthält. Jede dieser Optionen wird gut unterstützt, und die Entscheidung, welche Sie verwenden möchten, hängt von Ihren Vorlieben ab.
Wenn Sie ein Mac oder Linux verwenden, haben Sie bereits den ssh
-Befehl in Ihrem Terminal zur Verfügung.
Die einfachste Form des Befehls lautet:
Der remote_host
in diesem Beispiel ist die IP-Adresse oder der Domainname, zu dem bzw. der Sie eine Verbindung herstellen möchten.
Dieser Befehl setzt voraus, dass Ihr Benutzername auf dem entfernten System derselbe ist wie Ihr Benutzername auf Ihrem lokalen System.
Wenn Ihr Benutzername auf dem entfernten System unterschiedlich ist, können Sie ihn mit dieser Syntax angeben:
Nachdem Sie eine Verbindung zum Server hergestellt haben, werden Sie möglicherweise aufgefordert, Ihre Identität zu überprüfen, indem Sie ein Passwort eingeben. Später werden wir behandeln, wie Sie Schlüssel generieren können, um anstelle von Passwörtern zu verwenden.
Um die SSH-Sitzung zu beenden und in Ihre lokale Shell-Sitzung zurückzukehren, geben Sie Folgendes ein:
Wie funktioniert SSH?
SSH funktioniert, indem ein Client-Programm mit einem SSH-Server, genannt sshd
, verbunden wird.
Im vorherigen Abschnitt war ssh
das Client-Programm. Der SSH-Server lief bereits auf dem remote_host
, den wir angegeben haben.
Auf fast allen Linux-Umgebungen sollte der sshd
-Server automatisch gestartet werden. Falls er aus irgendeinem Grund nicht läuft, müssen Sie möglicherweise vorübergehend über eine webbasierte Konsole oder eine lokale serielle Konsole auf Ihren Server zugreifen.
Der Prozess zum Starten eines SSH-Servers hängt von der Linux-Distribution ab, die Sie verwenden.
Auf Ubuntu können Sie den SSH-Server starten, indem Sie Folgendes eingeben:
Dadurch sollte der sshd-Server gestartet werden, und Sie können sich dann remote anmelden.
Wie konfiguriert man SSH?
Wenn Sie die Konfiguration von SSH ändern, ändern Sie die Einstellungen des sshd-Servers.
In Ubuntu befindet sich die Haupt-sshd-Konfigurationsdatei unter /etc/ssh/sshd_config
.
Erstellen Sie eine Sicherungskopie der aktuellen Version dieser Datei, bevor Sie sie bearbeiten:
Öffnen Sie es mit nano
oder Ihrem bevorzugten Texteditor:
Die meisten Optionen in dieser Datei sollten Sie unverändert lassen. Es gibt jedoch einige, die Sie sich vielleicht genauer ansehen möchten:
Port 22
Die Port-Deklaration gibt an, auf welchem Port der SSHD-Server auf Verbindungen lauscht. Standardmäßig ist dies 22
. Sie sollten diese Einstellung wahrscheinlich unverändert lassen, es sei denn, Sie haben spezifische Gründe, dies zu ändern. Wenn Sie den Port ändern, zeigen wir Ihnen später, wie Sie eine Verbindung zum neuen Port herstellen können.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
Die Hostschlüssel-Deklarationen geben an, wo nach globalen Hostschlüsseln gesucht werden soll. Wir werden später besprechen, was ein Hostschlüssel ist.
SyslogFacility AUTH
LogLevel INFO
Diese beiden Elemente geben das Niveau des Logging an, das stattfinden soll.
Wenn Sie Probleme mit SSH haben, kann es sinnvoll sein, die Menge des Protokollierens zu erhöhen, um herauszufinden, worin das Problem besteht.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
Diese Parameter geben einige der Anmeldeinformationen an.
LoginGraceTime
gibt an, wie viele Sekunden die Verbindung aufrechterhalten werden soll, ohne dass eine erfolgreiche Anmeldung erfolgt.
Es könnte eine gute Idee sein, diese Zeit etwas höher als die Zeit einzustellen, die Sie normalerweise benötigen, um sich anzumelden.
PermitRootLogin
wählt aus, ob der root-Benutzer sich anmelden darf.
In den meisten Fällen sollte dies auf no
geändert werden, wenn Sie ein Benutzerkonto erstellt haben, das über erhöhte Rechte verfügt (über su
oder sudo
) und sich über SSH anmelden kann, um das Risiko zu minimieren, dass jemand Root-Zugriff auf Ihren Server erhält.
strictModes
ist ein Sicherheitsmechanismus, der einen Anmeldeversuch verweigert, wenn die Authentifizierungsdateien für jeden lesbar sind.
Dies verhindert Anmeldeversuche, wenn die Konfigurationsdateien nicht sicher sind.
X11Forwarding yes
X11DisplayOffset 10
Diese Parameter konfigurieren eine Funktion namens X11-Weiterleitung. Dies ermöglicht es Ihnen, die grafische Benutzeroberfläche (GUI) eines entfernten Systems auf dem lokalen System anzuzeigen.
Diese Option muss auf dem Server aktiviert sein und mit dem SSH-Client während der Verbindung mit der Option -X
übergeben werden.
Nachdem Sie Ihre Änderungen vorgenommen haben, speichern Sie die Datei und schließen Sie sie. Wenn Sie nano
verwenden, drücken Sie Strg+X
, dann, wenn Sie dazu aufgefordert werden, Y
und dann die Eingabetaste.
Wenn Sie Einstellungen in /etc/ssh/sshd_config
geändert haben, stellen Sie sicher, dass Sie Ihren sshd-Server neu laden, um Ihre Änderungen zu implementieren:
Sie sollten Ihre Änderungen gründlich testen, um sicherzustellen, dass sie wie erwartet funktionieren.
Es kann eine gute Idee sein, während Sie Änderungen vornehmen, ein paar Terminalfenster geöffnet zu lassen. Dies ermöglicht es Ihnen, die Konfiguration bei Bedarf ohne Aussperren rückgängig zu machen.
Wie man sich mit SSH mit Schlüsseln anmeldet
Während es hilfreich ist, sich mit Passwörtern bei einem entfernten System anzumelden, ist es schneller und sicherer, die authentifizierungsbasierte Authentifizierung einzurichten.
Wie funktioniert die authentifizierungsbasierte Schlüssel?
Die authentifizierungsbasierte Schlüssel funktioniert durch das Erstellen eines Schlüsselpaars: einen privaten Schlüssel und einen öffentlichen Schlüssel.
Der private Schlüssel befindet sich auf dem Client-Rechner und ist gesichert und geheim gehalten.
Der öffentliche Schlüssel kann an jeden weitergegeben oder auf jedem Server platziert werden, den Sie zugreifen möchten.
Wenn Sie versuchen, sich mit einem Schlüsselpaar zu verbinden, verwendet der Server den öffentlichen Schlüssel, um eine Nachricht für den Client-Computer zu erstellen, die nur mit dem privaten Schlüssel gelesen werden kann.
Der Client-Computer sendet dann die entsprechende Antwort zurück an den Server, und der Server wird wissen, dass der Client legitim ist.
Dieser Prozess wird automatisch durchgeführt, nachdem Sie Ihre Schlüssel konfiguriert haben.
Wie man SSH-Schlüssel erstellt
SSH-Schlüssel sollten auf dem Computer generiert werden, von dem aus Sie sich anmelden möchten. Dies ist normalerweise Ihr lokaler Rechner.
Geben Sie folgendes in die Befehlszeile ein:
Sie werden möglicherweise aufgefordert, ein Passwort für die Schlüsseldateien selbst festzulegen, aber dies ist eine ziemlich ungewöhnliche Praxis, und Sie sollten die Eingabetaste drücken, um die Standardeinstellungen zu akzeptieren. Ihre Schlüssel werden unter ~/.ssh/id_rsa.pub und ~/.ssh/id_rsa erstellt.
Wechseln Sie in das .ssh
-Verzeichnis, indem Sie Folgendes eingeben:
Überprüfen Sie die Berechtigungen der Dateien:
Output-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub
Wie Sie sehen können, ist die Datei id_rsa
nur für den Eigentümer lesbar und beschreibbar. Dies trägt dazu bei, sie geheim zu halten.
Die Datei id_rsa.pub
kann jedoch geteilt werden und hat Berechtigungen, die für diese Aktivität angemessen sind.
So übertragen Sie Ihren öffentlichen Schlüssel auf den Server
Wenn Sie derzeit über passwortbasierten Zugriff auf einen Server verfügen, können Sie Ihren öffentlichen Schlüssel darauf kopieren, indem Sie diesen Befehl ausführen:
Dies startet eine SSH-Sitzung. Nachdem Sie Ihr Passwort eingegeben haben, wird Ihr öffentlicher Schlüssel in die autorisierte Schlüsseldatei des Servers kopiert, was es Ihnen ermöglicht, sich beim nächsten Mal ohne Passwort anzumelden.
Clientseitige Optionen
Es gibt eine Reihe optionaler Flags, die Sie beim Verbinden über SSH angeben können.
Einige davon können erforderlich sein, um die Einstellungen in der Konfiguration des entfernten Hosts für sshd
anzupassen.
Zum Beispiel, wenn Sie die Portnummer in Ihrer sshd
-Konfiguration geändert haben, müssen Sie diesen Port auf der Clientseite entsprechend anpassen, indem Sie Folgendes eingeben:
Hinweis: Das Ändern Ihres SSH-Ports ist eine vernünftige Möglichkeit, Sicherheit durch Obskurität bereitzustellen. Wenn Sie SSH-Verbindungen zu einem weit verbreiteten Server-Deployment auf Port 22 wie gewohnt zulassen und die Authentifizierung per Passwort aktiviert haben, werden Sie wahrscheinlich von vielen automatisierten Anmeldeversuchen angegriffen. Die ausschließliche Verwendung von schlüsselbasierter Authentifizierung und das Ausführen von SSH auf einem nicht standardmäßigen Port ist nicht die komplexeste Sicherheitslösung, die Sie einsetzen können, sollte aber diese auf ein Minimum reduzieren.
Wenn Sie nur einen einzelnen Befehl auf einem entfernten System ausführen möchten, können Sie ihn nach dem Host angeben, wie folgt:
Sie werden sich mit der entfernten Maschine verbinden, sich authentifizieren und der Befehl wird ausgeführt.
Wie bereits erwähnt, wenn X11-Weiterleitung auf beiden Computern aktiviert ist, können Sie auf diese Funktion zugreifen, indem Sie Folgendes eingeben:
Mit den entsprechenden Tools auf Ihrem Computer werden GUI-Programme, die Sie auf dem entfernten System verwenden, jetzt ihr Fenster auf Ihrem lokalen System öffnen.
Deaktivieren der Passwortauthentifizierung
Wenn Sie SSH-Schlüssel erstellt haben, können Sie die Sicherheit Ihres Servers verbessern, indem Sie die ausschließliche Authentifizierung über Passwörter deaktivieren. Abgesehen von der Konsole ist der einzige Weg, sich bei Ihrem Server anzumelden, über den privaten Schlüssel, der mit dem öffentlichen Schlüssel übereinstimmt, den Sie auf dem Server installiert haben.
Warnung: Bevor Sie mit diesem Schritt fortfahren, stellen Sie sicher, dass Sie einen öffentlichen Schlüssel auf Ihrem Server installiert haben. Andernfalls werden Sie ausgesperrt!
Als Root oder Benutzer mit Sudo-Berechtigungen öffnen Sie die sshd
-Konfigurationsdatei:
Suchen Sie die Zeile, die Password Authentication
lautet, und entfernen Sie das führende #
, um es zu aktivieren. Sie können dann seinen Wert auf no
ändern:
PasswordAuthentication no
Zwei weitere Einstellungen, die normalerweise nicht geändert werden müssen (sofern Sie diese Datei nicht zuvor geändert haben), sind PubkeyAuthentication
und ChallengeResponseAuthentication
. Sie sind standardmäßig eingestellt und sollten wie folgt lauten:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Nachdem Sie Ihre Änderungen vorgenommen haben, speichern und schließen Sie die Datei.
Sie können nun den SSH-Dienst neu laden:
Die Passwortauthentifizierung sollte jetzt deaktiviert sein, und Ihr Server sollte nur über die SSH-Schlüsselauthentifizierung erreichbar sein.
Abschluss
Das Erlernen des Umgangs mit SSH wird allen Ihren zukünftigen Cloud-Computing-Bemühungen sehr zugutekommen. Wenn Sie die verschiedenen Optionen verwenden, werden Sie fortgeschrittenere Funktionen entdecken, die Ihnen das Leben erleichtern können. SSH ist beliebt geblieben, weil es sicher, leichtgewichtig und in vielfältigen Situationen nützlich ist.
Als nächstes möchten Sie möglicherweise mehr über das Arbeiten mit SFTP erfahren, um Dateiübertragungen über die Befehlszeile durchzuführen.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server