Sicherheitsbewusste Administratoren und Entwickler verwenden SSH-Schlüssel (Public Key Authentication) anstelle von Passwörtern, um die Sicherheit von SSH-Verbindungen zu erhöhen. Hier ist ein Schritt-für-Schritt-Tutorial, wie Sie SSH-Schlüssel auf einem Linux-System generieren und verwenden können.
1. SSH-Schlüssel generieren
a. SSH-Schlüssel erstellen
Öffnen Sie ein Terminal und verwenden Sie das ssh-keygen
-Tool, um ein neues Schlüsselpaar zu generieren.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Erklärung der Parameter:
-t rsa
: Wählt den RSA-Algorithmus aus.-b 4096
: Setzt die Schlüssellänge auf 4096 Bits.-C "your_email@example.com"
: Fügt einen Kommentar zum Schlüssel hinzu (z.B. Ihre E-Mail-Adresse).
b. Speicherort und Passphrase
Sie werden aufgefordert, den Speicherort des Schlüssels anzugeben. Drücken Sie einfach Enter
, um den Standardpfad zu akzeptieren (/home/your_user/.ssh/id_rsa
).
Enter file in which to save the key (/home/your_user/.ssh/id_rsa): [Press Enter]
Optional: Geben Sie eine sichere Passphrase ein oder lassen Sie das Feld leer, um keine Passphrase zu verwenden.
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
2. Öffentlichen Schlüssel zum Remote-Server hinzufügen
a. Öffentlichen Schlüssel kopieren
Verwenden Sie das ssh-copy-id
-Tool, um den öffentlichen Schlüssel zum Remote-Server zu kopieren. Ersetzen Sie user
und remote_host
durch den entsprechenden Benutzernamen und die IP-Adresse oder den Hostnamen Ihres Remote-Servers.
ssh-copy-id user@remote_host
Falls ssh-copy-id
nicht verfügbar ist, können Sie den öffentlichen Schlüssel manuell kopieren.
cat ~/.ssh/id_rsa.pub
Kopieren Sie den ausgegebenen Schlüssel und fügen Sie ihn zur Datei ~/.ssh/authorized_keys
auf dem Remote-Server hinzu.
ssh user@remote_host
mkdir -p ~/.ssh
echo "PASTE_PUBLIC_KEY_HERE" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
3. SSH-Konfiguration anpassen
Um die Verwendung des neuen Schlüssels zu vereinfachen, können Sie die Datei ~/.ssh/config
bearbeiten und Host-spezifische Einstellungen hinzufügen.
nano ~/.ssh/config
Fügen Sie die folgende Konfiguration hinzu:
Host remote_host
HostName remote_host
User user
IdentityFile ~/.ssh/id_rsa
Ersetzen Sie remote_host
, user
und ~/.ssh/id_rsa
durch Ihre spezifischen Informationen.
4. SSH-Verbindung testen
Stellen Sie eine Verbindung zum Remote-Server her, um sicherzustellen, dass alles korrekt konfiguriert ist.
ssh remote_host
Wenn Sie eine Passphrase verwendet haben, werden Sie aufgefordert, diese einzugeben.
5. Optional: Root-Anmeldung mit Passwort deaktivieren
Um die Sicherheit weiter zu erhöhen, können Sie die Root-Anmeldung mit Passwort deaktivieren. Bearbeiten Sie die Datei /etc/ssh/sshd_config
auf dem Remote-Server.
sudo nano /etc/ssh/sshd_config
Ändern Sie die folgenden Parameter:
PermitRootLogin prohibit-password
PasswordAuthentication no
Starten Sie den SSH-Dienst neu, um die Änderungen zu übernehmen.
sudo systemctl restart ssh
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie Sie SSH-Schlüssel generieren, den öffentlichen Schlüssel auf einen Remote-Server kopieren und eine sichere SSH-Verbindung herstellen. Durch die Verwendung von SSH-Schlüsseln anstelle von Passwörtern erhöhen Sie die Sicherheit Ihrer SSH-Verbindungen erheblich.