Vielen Dank, dass Sie die SSH-bezogenen Artikel meines Blogs geschätzt haben. Die Statistiken zeigen, dass viele von Ihnen Interesse an SSH haben, aber es scheint, dass es an einem umfassenden Leitfaden gefehlt hat, der die Frage beantwortet: "Wie konfiguriert man es von Anfang an sicher?"

SSH (Secure Shell) ist nicht nur ein Werkzeug für den Remote-Zugriff. Für Entwickler ist es die Lebensader des Servermanagements; für den durchschnittlichen Benutzer ist es eine mächtige Waffe, die es ermöglicht, jederzeit und überall auf meinen Computer zuzugreifen.

Heute werde ich Ihnen zeigen, wie Sie über die grundlegenden Konzepte von SSH hinausgehend, die Sicherheitskonfigurationen und Kenntnisse, die unbedingt beachtet werden müssen, aus der Sicht eines Praktikers, um richtig zu beginnen.


1. Was ist SSH und warum ist es unerlässlich?



SSH ist die Abkürzung für Secure Shell und ist ein Protokoll, das es ermöglicht, sich bei einem anderen Computer im Netzwerk anzumelden, Befehle auszuführen und Dateien zu übertragen. Der Kern ist die 'Verschlüsselung'. Im Gegensatz zu Telnet werden alle Kommunikationsinhalte verschlüsselt übertragen, sodass, selbst wenn jemand die Daten abfängt, der Inhalt nicht erkennbar ist.

  • Entwickler: Essentiell für das Bereitstellen und Verwalten von Cloud-Servern wie AWS oder Azure.

  • Nicht-Entwickler: Sicheres Steuern des PCs, NAS oder Raspberry Pi von außerhalb des Hauses.

2. Server (Remote) Konfiguration: Der erste Schritt zur Sicherheit

Das Installieren von openssh-server auf dem Server (Remote) ist nur der Anfang. Die Verwendung der Grundkonfiguration direkt nach der Installation ist aus Sicherheitsgründen sehr anfällig.

Der Speicherort der Konfigurationsdatei ist unter Linux /etc/ssh/sshd_config. Diese Datei muss bearbeitet werden, um mindestens die erforderlichen Sicherheitsvorkehrungen zu treffen.

Ändern der Konfigurationsdatei: sudo nano /etc/ssh/sshd_config

Praktische Konfiguration 1: Ändern des Standardports (Port Change)

SSH verwendet weltweit den Port 22. Die automatisierten Bots von Hackern konzentrieren ihre Angriffe ausschließlich auf den Port 22. Wenn Sie die Portnummer ändern, können Sie mehr als 90 % der Brute-Force-Angriffe vermeiden.

# Port 22  <-- Kommentieren oder entfernen
Port 22022  # Verwenden Sie eine beliebige Portnummer über 1024

Praktische Konfiguration 2: Deaktivieren der Passwortauthentifizierung (Password Authentication No)

Passwörter können irgendwann geknackt werden. Sie sollten die wesentlich sicherere SSH Key (Schlüssel)-Methode verwenden und nach Abschluss der Schlüsselkonstruktion den Passwortzugang vollständig blockieren.

PasswordAuthentication no

⚠️ Achtung: Diese Einstellung muss angewendet werden, nachdem bestätigt wurde, dass der SSH-Schlüsselzugang ordnungsgemäß funktioniert. Andernfalls wird der Zugriff auf den Server vollständig blockiert.

3. Lokale (Client) Konfiguration: Schlüssel (Key) Erstellung und Registrierung



Jetzt ist es an der Zeit, den Schlüssel zu erstellen, mit dem ich von meinem PC (lokal) auf den Server zugreife. Ab hier benötigen wir das Know-how erfahrener Benutzer.

Know-how 1: Erstellen eines erkennbaren Schlüssels (-C-Option)

Wenn Sie den Schlüssel generieren, geben Sie nicht einfach ssh-keygen ein. Wenn Sie später viele Schlüssel haben, wird es schwierig, zu unterscheiden, welcher Schlüssel wofür verwendet wird. Verwenden Sie auf jeden Fall die Kommentar-Option.

# -t ed25519: neueste Verschlüsselungsmethode (ausgezeichnete Geschwindigkeit und Sicherheit)
# -C: Hilft bei der Identifikation durch einen Kommentar am Ende der Schlüsseldatei.
ssh-keygen -t ed25519 -C "my-macbook-pro-home-server-key"

Der generierte Schlüssel wird im Verzeichnis ~/.ssh/ gespeichert. (id_ed25519: privater Schlüssel, id_ed25519.pub: öffentlicher Schlüssel)

Know-how 2: Der einfachste Weg zum Kopieren des Schlüssels (ssh-copy-id)

Der generierte öffentliche Schlüssel (pub) muss auf dem Server registriert werden. Erledigen Sie dies mit einem einzigen Befehl, ohne den umständlichen Prozess des Kopierens und Einfügens des Texts.

# Syntax: ssh-copy-id -i [ÖffentlicherSchlüsselPfad] [Benutzer]@[Serveradresse] -p [Port]
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.100 -p 22022

# Wenn Ihr Server mit einer DNS-Domain verbunden ist, können Sie anstelle einer IP einfach die DNS eingeben. Ihr Router wird die IP zurückübersetzen. 
ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@wonderland.com -p 22022

Dieser Befehl fügt automatisch Ihren öffentlichen Schlüssel zur Datei ~/.ssh/authorized_keys auf dem Server hinzu.

Know-how 3: Punkt, auf den bei manueller Registrierung zu achten ist (Berechtigungsprobleme)

Falls Sie ssh-copy-id nicht verwenden können und manuell registrieren müssen, achten Sie auf die Dateiberechtigungen (Permission). SSH verweigert den Zugriff aus Sicherheitsgründen, wenn die Berechtigungen zu offen sind.

Überprüfen Sie nach dem Zugriff auf den Server im Home-Verzeichnis Folgendes:

  1. .ssh Ordner: Berechtigung 700 (nur ich kann lesen/schreiben/ausführen)

  2. authorized_keys Datei: Berechtigung 600 (nur ich kann lesen/schreiben)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Wenn Sie mehr über die Berechtigungen im Linux-Dateisystem erfahren möchten, klicken Sie hier für weitere Details!

4. Verbindungstests und nächste Schritte

Wenn alle Vorbereitungen getroffen sind, versuchen Sie, eine Verbindung herzustellen. Da Sie den Port geändert haben, müssen Sie die -p-Option verwenden.

ssh -p 22022 user@192.168.1.100
# Egal ob LAN-IP, WAN-IP oder DNS-Domain, solange sie klar auf den Server zeigen, ist das in Ordnung.

Wenn Sie ohne ein Passwort gefragt zu werden, sofort verbunden werden, war das ein Erfolg. Jetzt sollten Sie im sshd_config des Servers PasswordAuthentication no konfigurieren, um die Sicherheit abzuschließen.


Bild über die Verbindung zum Server mit SSH

Jetzt haben Sie eine Umgebung eingerichtet, in der Sie Ihren Server sicher steuern können. Aber die Welt von SSH ist groß. Lernen Sie im folgenden Artikel, wie Sie den Zugriff automatisieren und Dateien verwalten sowie stärkere Sicherheitswerkzeuge integrieren können.

📖 Ergänzende weiterführende Leitfäden

  1. SSH-Anwendung: Vom Erstellen von Befehlen bis zu nützlichen Optionen voll im Griff!

  2. Der erste Schritt zur Automatisierung des Zugriffs auf SSH: Mastering der Konfigurationsdatei

  3. SSH Reverse Port Forwarding: Die Magie, von extern auf intern zuzugreifen (feat. -R-Option)

  4. SSH keygen: Vollständiger Leitfaden für Anfänger

  5. Verwalten von Serverdateien über SSH ohne Terminal: Nutzen von SFTP und GUI-Datei-Explorern!

  6. Der Wächter, der Ihre Linux-Server schützt: Fail2Ban


Im nächsten Beitrag werde ich über die SSH Config-Datei sprechen, die viele verwirrt. Es wird sehr nützlich sein, sich mit nur einem Wort ohne komplizierte Optionen mit dem Server zu verbinden, was im zweiten oben genannten Beitrag behandelt wird. Wenn Sie außerdem hilfreich fanden, werfen Sie einen Blick auf die anderen Artikel!