Einführung
Eines der wichtigsten Werkzeuge für Systemadministratoren ist SSH. SSH (Secure Shell) ist ein Protokoll für die sichere Anmeldung an entfernten Systemen. Es ist die gängigste Methode, um remote auf Linux-Server zuzugreifen. In diesem Leitfaden erklären wir die Verwendung von SSH zur Verbindung mit einem entfernten System.
Kernsyntax
Um sich per SSH mit einem entfernten System zu verbinden, verwenden wir den Befehl `ssh`. Unter Windows benötigen Sie eine Version von OpenSSH, um SSH über das Terminal nutzen zu können. Wenn Sie lieber mit PowerShell arbeiten, folgen Sie der Microsoft-Dokumentation zum Hinzufügen von OpenSSH zu PowerShell. Für eine vollständige Linux-Umgebung können Sie WSL (Windows-Subsystem für Linux) einrichten, das SSH standardmäßig enthält. Als dritte, ressourcenschonende Option können Sie Git für Windows installieren. Dieses bietet eine Windows-Bash-Terminalumgebung mit dem Befehl `ssh`. Alle diese Optionen werden gut unterstützt; die Wahl hängt von Ihren persönlichen Vorlieben ab. Unter macOS und Linux ist der Befehl `ssh` bereits im Terminal verfügbar.
Die einfachste Form des Befehls lautet:
ssh remote_host„remote_host“ ist in diesem Beispiel die IP-Adresse oder der Domänenname, zu dem Sie eine Verbindung herstellen möchten. Dieser Befehl setzt voraus, dass Ihr Benutzername auf dem Remote-System mit Ihrem Benutzernamen auf Ihrem lokalen System übereinstimmt.
Falls Ihr Benutzername auf dem Remote-System abweicht, können Sie ihn mit dieser Syntax angeben:
ssh remote_username@remote_hostNach der Verbindung zum Server werden Sie möglicherweise aufgefordert, Ihre Identität durch Angabe eines Passworts zu bestätigen. Wir werden später darauf eingehen, wie Sie anstelle von Passwörtern Schlüssel generieren können.
Um SSH zu verlassen und zu Ihrer lokalen Shell zurückzukehren, geben Sie Folgendes ein:
exitWie funktioniert SSH?
SSH funktioniert, indem ein Clientprogramm mit einem SSH-Server namens sshd verbunden wird. Im vorherigen Abschnitt war ssh das Clientprogramm. Der SSH-Server lief bereits auf dem von uns angegebenen Remote-Host. In fast allen Linux-Umgebungen startet der sshd-Server automatisch. 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 Vorgang zum Starten des SSH-Servers hängt von Ihrer Linux-Distribution ab.
Unter Ubuntu können Sie den SSH-Server mit folgendem Befehl starten:
sudo systemctl start sshDadurch sollte der SSHD-Server gestartet werden, und anschließend können Sie sich remote einloggen.
Wie konfiguriert man SSH?
Wenn Sie die SSH-Konfiguration ändern, ändern Sie die Einstellungen des SSHD-Servers. Unter Ubuntu befindet sich die Hauptkonfigurationsdatei für SSHD unter /etc/ssh/sshd_config. Erstellen Sie vor der Bearbeitung eine Sicherungskopie der aktuellen Version dieser Datei.
sudo cp /etc/ssh/sshd_config{,.bak}Öffnen Sie die Datei mit nano oder Ihrem bevorzugten Texteditor:
sudo nano /etc/ssh/sshd_configDie meisten Optionen in dieser Datei sollten Sie unverändert lassen, aber einige wenige sollten Sie sich vielleicht einmal ansehen:
Port 22Die Portangabe legt fest, auf welchem Port der SSHD-Server auf Verbindungen wartet. Standardmäßig ist dies Port 22. Sie sollten diese Einstellung möglichst unverändert lassen, es sei denn, Sie haben triftige Gründe dafür. Falls Sie den Port ändern, zeigen wir Ihnen weiter unten, wie Sie sich mit dem neuen Port verbinden.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_keyHost-Key-Deklarationen legen fest, wo nach globalen Host-Keys gesucht werden soll. Was ein Host-Key ist, werden wir später erläutern.
SyslogFacility AUTH
LogLevel INFODiese beiden Elemente geben den Umfang der Protokollierung an, die erfolgen soll.
Wenn Sie Probleme mit SSH haben, kann eine Erhöhung der Protokollierungsrate ein guter Weg sein, das Problem zu entdecken.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yesDiese Parameter enthalten einige Anmeldeinformationen.
`LoginGraceTime` legt fest, wie viele Sekunden die Verbindung ohne erfolgreichen Login offen bleibt. Es empfiehlt sich, diese Zeit etwas länger als die Dauer eines normalen Logins einzustellen. `PermitRootLogin` bestimmt, ob sich der Root-Benutzer anmelden darf. In den meisten Fällen sollte dieser Wert auf „no“ gesetzt werden, wenn Sie ein Benutzerkonto mit erhöhten Rechten (über `su` oder `sudo`) erstellt haben, das sich per SSH anmelden kann, um das Risiko eines Root-Zugriffs auf Ihren Server zu minimieren. `.strictModes` ist eine Sicherheitsmaßnahme, die Anmeldeversuche verhindert, wenn die Authentifizierungsdateien öffentlich lesbar sind. Dadurch werden Anmeldeversuche verhindert, wenn die Konfigurationsdateien nicht sicher sind.
X11Forwarding yes
X11DisplayOffset 10Diese Parameter konfigurieren die Funktion X11-Weiterleitung. Dadurch können Sie die grafische Benutzeroberfläche (GUI) eines entfernten Systems auf Ihrem lokalen System anzeigen. Diese Option muss auf dem Server aktiviert und beim Verbindungsaufbau mit der Option `-X` eines SSH-Clients angegeben werden. Speichern und schließen Sie die Datei nach Ihren Änderungen. Wenn Sie nano verwenden, drücken Sie Strg+X, dann Y und anschließend die Eingabetaste, wenn Sie dazu aufgefordert werden. Wenn Sie Einstellungen in `/etc/ssh/sshd_config` geändert haben, starten Sie Ihren SSHD-Server neu, um die Änderungen zu übernehmen.
sudo systemctl reload sshSie sollten Ihre Änderungen gründlich testen, um sicherzustellen, dass sie wie erwartet funktionieren. Es empfiehlt sich, während der Änderungen mehrere Terminal-Sitzungen geöffnet zu halten. So können Sie die Konfiguration bei Bedarf rückgängig machen, ohne sich selbst auszusperren.
So melden Sie sich mit Schlüsseln bei SSH an
Obwohl die Anmeldung per Passwort aus der Ferne nützlich ist, ist die Einrichtung einer schlüsselbasierten Authentifizierung schneller und sicherer.
Wie funktioniert die schlüsselbasierte Authentifizierung?
Die schlüsselbasierte Authentifizierung funktioniert durch die Erstellung eines Schlüsselpaares: eines privaten und eines öffentlichen Schlüssels. Der private Schlüssel befindet sich auf dem Client-Rechner und wird sicher und geheim gehalten. Der öffentliche Schlüssel kann an beliebige Personen weitergegeben oder auf einem beliebigen Server hinterlegt werden. Beim Verbindungsversuch mit einem Schlüsselpaar erstellt der Server mithilfe des öffentlichen Schlüssels eine Nachricht für den Client-Rechner, die nur mit dem privaten Schlüssel gelesen werden kann. Der Client-Rechner sendet daraufhin die entsprechende Antwort an den Server, der so die Legitimität des Clients bestätigt. Dieser Vorgang läuft nach der Konfiguration der Schlüssel automatisch ab.
Wie man SSH-Schlüssel erstellt
SSH-Schlüssel müssen auf dem Computer erstellt werden, von dem aus Sie sich anmelden möchten. Dies ist üblicherweise Ihr lokaler Rechner.
Geben Sie Folgendes in der Befehlszeile ein:
ssh-keygen -t rsaMöglicherweise werden Sie aufgefordert, ein Passwort für die Schlüsseldateien festzulegen. Dies ist jedoch eher unüblich. Bestätigen Sie die Befehle daher einfach mit der Eingabetaste, um die Standardeinstellungen zu übernehmen. Ihre Schlüssel werden in ~/.ssh/id_rsa.pub und ~/.ssh/id_rsa erstellt.
Wechseln Sie in das .ssh-Verzeichnis, indem Sie folgenden Code eingeben:
cd ~/.sshSchauen Sie sich die Dateiberechtigungen an:
ls -lOutput
-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.pubWie Sie sehen, ist die Datei id_rsa nur für den Eigentümer les- und schreibbar. Dies trägt dazu bei, sie geheim zu halten.
Die Datei id_rsa.pub kann jedoch freigegeben werden und verfügt über die entsprechenden Berechtigungen für diese Aktivität.
Wie übertrage ich den öffentlichen Schlüssel auf den Server?
Wenn Sie derzeit passwortgeschützten Zugriff auf einen Server haben, können Sie Ihren öffentlichen Schlüssel mit folgendem Befehl darauf kopieren:
ssh-copy-id remote_hostDadurch wird eine SSH-Sitzung gestartet. Nach Eingabe Ihres Passworts wird Ihr öffentlicher Schlüssel in die Datei mit den autorisierten Schlüsseln des Servers kopiert, sodass Sie sich beim nächsten Mal ohne Passwort anmelden können.
Clientseitige Optionen
Beim Verbinden über SSH stehen Ihnen eine Reihe optionaler Befehle zur Verfügung. Einige davon sind möglicherweise erforderlich, um die Einstellungen in der sshd-Konfiguration des Remote-Hosts abzugleichen.
Wenn Sie beispielsweise die Portnummer in Ihrer SSHD-Konfiguration geändert haben, müssen Sie diesen Port auf Clientseite anpassen, indem Sie Folgendes eingeben:
ssh -p port_number remote_hostWenn Sie nur einen einzigen Befehl auf einem entfernten System ausführen möchten, können Sie diesen nach dem Hostnamen angeben, etwa so:
ssh remote_host command_to_runSie stellen eine Verbindung zum Remote-Gerät her, authentifizieren sich und der Befehl wird ausgeführt.
Wie bereits erwähnt, können Sie, falls die X11-Weiterleitung auf beiden Computern aktiviert ist, diese Funktion durch Eingabe des folgenden Befehls aufrufen:
ssh -X remote_hostSofern Sie die richtigen Tools auf Ihrem Computer haben, öffnen die GUI-Programme, die Sie auf dem Remote-System verwenden, nun ein eigenes Fenster auf Ihrem lokalen System.
Passwortauthentifizierung deaktivieren
Wenn Sie SSH-Schlüssel erstellt haben, können Sie die Sicherheit Ihres Servers erhöhen, indem Sie die Passwortauthentifizierung deaktivieren. Abgesehen von der Konsole ist die Anmeldung am Server nur noch über den privaten Schlüssel möglich, der mit dem auf dem Server installierten öffentlichen Schlüssel verknüpft ist.
Öffnen Sie als Root oder als Benutzer mit sudo-Berechtigungen die sshd-Konfigurationsdatei:
sudo nano /etc/ssh/sshd_configSuchen Sie die Zeile mit der Bezeichnung „Passwortauthentifizierung“ und löschen Sie sie, indem Sie das führende „#“ entfernen. Anschließend können Sie ihren Wert auf „Nein“ ändern.
PasswordAuthentication noZwei weitere Einstellungen, die nicht geändert werden müssen (vorausgesetzt, Sie haben diese Datei nicht bereits bearbeitet), sind PubkeyAuthentication und ChallengeResponseAuthentication. Sie sind standardmäßig festgelegt und sollten wie folgt lauten:
PubkeyAuthentication yes
ChallengeResponseAuthentication noNachdem Sie die Änderungen vorgenommen haben, speichern und schließen Sie die Datei.
Sie können den SSH-Daemon jetzt neu laden:
sudo systemctl reload sshDie Passwortauthentifizierung sollte nun deaktiviert sein und Ihr Server sollte nur noch über SSH-Schlüsselauthentifizierung erreichbar sein.
Ergebnis
Kenntnisse im Umgang mit SSH sind für alle Ihre zukünftigen Cloud-Computing-Projekte äußerst nützlich. Durch die Nutzung der verschiedenen Optionen entdecken Sie fortgeschrittenere Funktionen, die Ihnen die Arbeit erleichtern. SSH ist nach wie vor beliebt, da es sicher, ressourcenschonend und in vielen Situationen hilfreich ist.









