Nachfolgend findest du die einzelnen Schritte, um deine SSH-Verbindung zu einem Server mithilfe eines Zertifikats (SSH-Schlüssels) abzusichern.
1. SSH-Schlüssel erstellen
Öffne das Terminal auf deinem Mac (oder Linux-System) und verwende folgenden Befehl, um ein SSH-Schlüsselpaar zu erstellen:
ssh-keygen -t ed25519 -C "deine_email@example.com"
- Der Parameter
-t ed25519
legt fest, dass ED25519 als Verschlüsselungsalgorithmus verwendet wird. - Mit
-C "deine_email@example.com"
kannst du einen Kommentar hinzufügen, z. B. deine E-Mail-Adresse.
Du wirst gefragt, wo der Schlüssel gespeichert werden soll. Der Standardpfad ist ~/.ssh/id_ed25519
. Ich empfehle, den Schlüssel nach dem Server zu benennen, z. B. ~/.ssh/servername
. Du kannst das Passwort leer lassen, wenn du den Schlüssel nicht zusätzlich schützen möchtest – ansonsten lege eines fest.
2. Öffentlichen Schlüssel auf den Linux-Rechner kopieren
Sobald der Schlüssel erstellt wurde, kannst du den öffentlichen Schlüssel (~/.ssh/id_ed25519.pub
) auf deinen SSH-Host hochladen:
ssh-copy-id benutzername@hostname
Dies kopiert den Inhalt des öffentlichen Schlüssels in die Datei ~/.ssh/authorized_keys
auf dem Linux-Rechner.
Ersetze benutzername
und hostname
durch den Benutzernamen und Hostnamen bzw. die IP-Adresse des Zielsystems.
3. Manuelles Kopieren des SSH-Schlüssels
Falls ssh-copy-id
nicht verfügbar ist, kannst du den öffentlichen Schlüssel auch manuell kopieren:
Öffne den öffentlichen Schlüssel auf deinem Mac:
cat ~/.ssh/id_rsa.pub
Kopiere den angezeigten Schlüsselinhalt und füge ihn auf dem Linux-Rechner in die Datei ~/.ssh/authorized_keys
ein. Du kannst diese Datei auf dem Linux-Rechner wie folgt bearbeiten:
nano ~/.ssh/authorized_keys
Füge den Schlüssel in einer neuen Zeile ein und speichere die Datei.
4. Testen der Verbindung
Teste die SSH-Verbindung:
ssh benutzername@hostname
Wenn alles korrekt eingerichtet ist, solltest du dich ohne Passwortabfrage anmelden können.
5. Passwort-Login auf dem Linux-Host deaktivieren
Wichtig: Vergewissere dich vorab, dass der Login mit SSH-Schlüssel funktioniert.
Andernfalls riskierst du, dich vom Server auszusperren.
Bearbeite auf dem Server die Datei:
sudo nano /etc/ssh/sshd_config
Füge folgende Einstellungen hinzu bzw. passe sie an:
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
Erklärung:
PubkeyAuthentication yes
: Aktiviert die Anmeldung per SSH-Schlüssel.PasswordAuthentication no:
Deaktiviert die Anmeldung per Passwort.KbdInteractiveAuthentication no:
Verhindert passwortähnliche Eingabeverfahren.PermitRootLogin prohibit-password:
Erlaubt Root-Zugriff nur per Schlüssel, nicht mit Passwort.
Starte den SSH-Dienst neu:
sudo systemctl restart ssh
Öffne ein neues Terminalfenster und teste die Verbindung erneut, bevor du die aktuelle Sitzung beendest.
Konfiguration des SSH-Profils auf dem Mac
Um den Verbindungsaufbau weiter zu vereinfachen, kannst du auf deinem Mac eine SSH-Konfigurationsdatei mit Profil-Einträgen anlegen.
Bearbeite die Datei ~/.ssh/config
:
nano ~/.ssh/config
Beispielkonfiguration:
Host hostname
Hostname host.domain.com
User username
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 15
ServerAliveCountMax 12
- Host: Definiert entweder den Hostnamen oder einen Alias für den SSH-Zielserver. Falls du einen Alias definieren willst, dann musst du zusätzlich die Option
HostName host.domain.com
als Parameter hinzufügen. - User: Gibt den Benutzernamen an, mit dem du dich auf dem Server anmelden möchtest. Spart dir die manuelle Eingabe bei jeder Verbindung.
- IdentityFile: Pfad zum privaten SSH-Schlüssel, der für die Authentifizierung verwendet wird. Er sollte zu einem auf dem Server hinterlegten öffentlichen Schlüssel passen.
- ServerAliveInterval: Gibt an, in welchem Zeitintervall (in Sekunden) der Client ein Keep-Alive-Signal an den Server sendet, um Verbindungsabbrüche durch Inaktivität zu vermeiden.
- ServerAliveCountMax: Bestimmt, wie oft ein Keep-Alive-Signal erfolglos gesendet werden darf, bevor der Client die Verbindung trennt. Multipliziert mit
ServerAliveInterval
ergibt sich die maximale Ausfallzeit in Sekunden.
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.