SSH ist ein Protokoll der Anwendungsschicht und wird häufig für den Remote-Zugriff verwendet. In diesem Artikel zeigen wir, wie Sie mithilfe des SSH-Protokolls eine Verbindung zu entfernten Linux-Servern herstellen und bestimmte Einstellungen konfigurieren, um die Sicherheit zu erhöhen.
SSH kann mit jeder Linux-Distribution verwendet werden, da es standardmäßig auf den meisten modernen Unix- und Linux-Systemen aktiviert ist.
In dieser Anleitung wurden alle Schritte unter Ubuntu 22.04 getestet. Sie lassen sich jedoch ebenso auf andere Distributionen wie Debian, CentOS usw. anwenden.
Es gibt verschiedene Client-Programme, mit denen Sie sich per SSH mit Linux-Servern verbinden können. Zu den gängigsten gehören:
Windows: PuTTY, Bitvise SSH Client, SuperPuTTY, mRemoteNG, MobaXterm
macOS: Termius oder das integrierte SSH-Tool im Terminal
Windows (Windows 10, Windows 11, Windows Server 2019): Der integrierte OpenSSH-Client, zugänglich über die Kommandozeile (cmd) oder PowerShell
Die Standard-Syntax für den SSH-Befehl lautet:
ssh <benutzername@IP_oder_Domain>
Beispiel:
ssh alex@166.1.227.189
Standardmäßig verbindet sich SSH über Port 22. Wenn der Server einen anderen Port verwendet, geben Sie diesen mit der Option -p an:
ssh alex@166.1.227.189 -p 2222
Die Konfigurationsdatei des SSH-Servers heißt sshd_config und befindet sich im Verzeichnis /etc/ssh. Verwechseln Sie diese nicht mit der Client-Konfigurationsdatei ssh_config. In diesem Artikel konzentrieren wir uns ausschließlich auf die Server-Konfiguration.
Standardmäßig erfolgen SSH-Verbindungen passwortbasiert, sofern beim Erstellen des Servers kein SSH-Schlüssel hinzugefügt wurde (SSH-Schlüssel werden im nächsten Abschnitt behandelt). In den meisten Linux-/Unix-Distributionen ist die PAM-Authentifizierung aktiviert, sodass sich Benutzer mit Systemkonten per Benutzername und Passwort anmelden können.
Um sich per Passwort anzumelden, benötigen Sie die Adresse des entfernten Servers sowie die Zugangsdaten des Benutzers, zum Beispiel:
ssh alex@166.1.227.189
Nach Eingabe des Befehls werden Sie zur Eingabe des Passworts aufgefordert. Ist dieses korrekt, erhalten Sie Zugriff auf den Server.
Bei der ersten Verbindung erscheint eine Meldung zum „Fingerprint“ des Servers. Geben Sie yes ein, um fortzufahren.
Obwohl die Passwortauthentifizierung funktioniert, ist sie nicht die sicherste Methode, da Passwörter erraten werden können. Eine deutlich sicherere Alternative ist die Authentifizierung mit SSH-Schlüsseln, die im nächsten Abschnitt beschrieben wird.
SSH-Schlüssel sind eine sicherere und heute übliche Methode zur Authentifizierung. SSH verwendet zwei Arten von Schlüsseln:
Öffentlicher Schlüssel: Wird zur Verschlüsselung verwendet und kann öffentlich weitergegeben werden
Privater Schlüssel: Wird zur Entschlüsselung verwendet und muss geheim gehalten werden
Um SSH-Schlüssel zu erstellen, verwenden Sie den Befehl:
ssh-keygen
Der Befehl fordert Sie auf, ein Verzeichnis zum Speichern der Schlüssel auszuwählen. Standardmäßig werden sie im Verzeichnis .ssh im Home-Verzeichnis gespeichert, z. B. /home/alex/.ssh. Drücken Sie Enter, um den Standardpfad zu verwenden.
Anschließend werden Sie gefragt, ob Sie eine Passphrase festlegen möchten, um die Sicherheit zu erhöhen. Wenn Sie keine Passphrase verwenden möchten, drücken Sie einfach Enter.
Nach der Erstellung befinden sich der private Schlüssel (id_rsa) und der öffentliche Schlüssel (id_rsa.pub) im .ssh-Verzeichnis.
Bevor Sie sich mit dem entfernten Host verbinden, kopieren Sie den öffentlichen Schlüssel mit ssh-copy-id auf den Zielserver:
ssh-copy-id -i /home/alex/.ssh/id_rsa.pub alex@166.1.227.189
Sie werden einmalig zur Eingabe des Passworts des entfernten Benutzers aufgefordert. Danach wird der öffentliche Schlüssel auf dem Server hinterlegt, sodass Sie sich ohne Passwort anmelden können:
ssh alex@166.1.227.189
Wenn kein Passwort mehr abgefragt wird, funktioniert die schlüsselbasierte Authentifizierung korrekt.
Da Passwörter als unsicher gelten, wird empfohlen, die Passwortauthentifizierung zu deaktivieren und ausschließlich schlüsselbasierte Anmeldungen zu verwenden. Bearbeiten Sie dazu die SSH-Server-Konfigurationsdatei:
nano /etc/ssh/sshd_config
Suchen Sie die Zeile PasswordAuthentication und setzen Sie den Wert auf no:
PasswordAuthentication no
Speichern Sie die Änderungen und starten Sie den SSH-Dienst neu:
systemctl restart ssh
Wichtig: Stellen Sie sicher, dass die Authentifizierung mit SSH-Schlüsseln funktioniert, bevor Sie die Passwortauthentifizierung deaktivieren. Andernfalls können Sie sich selbst vom Server aussperren. In diesem Fall lässt sich die Passwortanmeldung über die Webkonsole des Servers wiederherstellen.
Standardmäßig verwendet der SSH-Server Port 22. Sie können diesen ändern, indem Sie die Datei sshd_config bearbeiten. Suchen Sie die Zeile Port, entfernen Sie das # und geben Sie einen neuen Port an (zwischen 1024 und 65535):
Port 2224
Speichern Sie die Änderungen und starten Sie den SSH-Dienst neu:
systemctl restart ssh
Um sich über den neuen Port zu verbinden, verwenden Sie erneut die Option -p:
ssh alex@166.1.227.189 -p 2224
In einigen Distributionen ist die Anmeldung als Root-Benutzer standardmäßig erlaubt. Da Root uneingeschränkte Systemrechte besitzt, ist es sicherer, diese Anmeldung zu deaktivieren. Suchen Sie dazu die Zeile PermitRootLogin in der Datei sshd_config und setzen Sie sie auf no:
PermitRootLogin no
Speichern Sie die Datei und starten Sie den SSH-Dienst neu:
systemctl restart ssh
Sie können den SSH-Zugriff auf bestimmte Benutzer beschränken, indem Sie in der Datei sshd_config folgende Parameter verwenden:
AllowUsers – gibt an, welche Benutzer sich per SSH anmelden dürfen, z. B.:
AllowUsers test admin
DenyUsers – gibt an, welchen Benutzern der SSH-Zugriff verweigert wird, z. B.:
DenyUsers nginx websrv
Nach Änderungen den SSH-Dienst neu starten:
systemctl restart ssh
SSH ist ein unverzichtbares Werkzeug für die Verbindung zu entfernten Servern. Neben der integrierten Verschlüsselung können Sie die Sicherheit Ihres SSH-Servers zusätzlich erhöhen, indem Sie ihn korrekt konfigurieren, etwa durch das Deaktivieren der Passwortauthentifizierung und das Einschränken des Zugriffs auf bestimmte Benutzer.