- Warum sollte ich einen SSH-Schlüssel erstellen und verwenden?
- Voraussetzungen und grundlegende Konzepte
- Erstellen eines SSH-Schlüssels unter Linux/macOS/WSL
- Erstellen eines SSH-Schlüssels unter Windows (PowerShell / Windows OpenSSH)
- Importieren öffentlicher Schlüssel in AWS EC2 und anderen Cloud-Panels
- Füge den Schlüssel zu GitLab/GitHub hinzu und verwende ihn in der CI.
- Server- und Sicherheitseinstellungen nach der Schlüsselinstallation
- Praktische Tipps für verschiedene Anwendungen
- Schlüsselmanagement, Rotation und Standards
- Zusätzliche Tipps und Fehlerbehebung
- Abschließende Sicherheitsempfehlungen
- Zusammenfassung und empfohlene Checkliste
Warum sollte ich einen SSH-Schlüssel erstellen und verwenden?
In Cloud-Umgebungen und internationalen Rechenzentren ist die sichere und automatisierte Anmeldung an Servern ein Eckpfeiler jeder DevOps-Operation, jedes Webhostings, Renderings, KI-Anwendungen und Datenbankmanagements. SSH-Schlüssel Sie stellen eine standardisierte, sichere und skriptfähige Methode zur Authentifizierung dar und ersetzen schwache Passwörter.
Die Verwendung von öffentlichen/privaten Schlüsseln verringert das Risiko von Brute-Force-Angriffen und erleichtert die Automatisierung und Implementierung feingranularer Zugriffskontrollen.
Voraussetzungen und grundlegende Konzepte
Privater Schlüssel: Ihre vertrauliche Akte, die nicht offengelegt werden sollte.
Öffentlicher Schlüssel: Eine Datei, die auf dem Server abgelegt wird (authorized_keys).
Gängige Algorithmen: ed25519 (Empfohlen), RSA 4096.
Routen: ~/.ssh/id_* Unter Linux/WSL und C:\Users\ .ssh Unter Windows.
Zugriffe: chmod 700 ~/.ssh Und chmod 600 Für den privaten Schlüssel.
Erstellen eines SSH-Schlüssels unter Linux/macOS/WSL
Es wird empfohlen, ed25519 Verwenden Sie diese Option nur, wenn Sie RSA aus Kompatibilitätsgründen benötigen.
Schritte zum Generieren und Verwalten von Schlüsseln in Shell
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa -o -a 100
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ls -la ~/.ssh
cat ~/.ssh/id_ed25519.pub
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 [email protected]
chmod 400 my-aws-key.pem
ssh -i my-aws-key.pem [email protected]Hinweis: In AWS wählen oder importieren Sie den Schlüssel häufig beim Starten einer Instanz. Wenn Sie eine PEM-Datei haben, verwenden Sie diese als Identitätsschlüssel.
Erstellen eines SSH-Schlüssels unter Windows (PowerShell / Windows OpenSSH)
Windows 10/11 verfügt über einen OpenSSH-Client; alternativ können Sie PuTTY/Puttygen verwenden, um eine Verbindung mit PuTTY herzustellen.
PowerShell-Befehle
ssh-keygen -t ed25519 -C "[email protected]" -f $env:USERPROFILE\.ssh\id_ed25519
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519Dateipfad:
C:\Users\ \.ssh\id_ed25519C:\Users\ \.ssh\id_ed25519.pub
Konvertieren Sie PEM in PPK mit PuTTYgen
Allgemeine Schritte:
Öffnen Sie PuTTYgen.
Datei > Privaten Schlüssel und Datei laden
my-aws-key.pemLaden (alle Dateien anzeigen).Privaten Schlüssel speichern unter
my-aws-key.ppkUnd verwenden Sie es in PuTTY (Verbindung > SSH > Authentifizierung > Datei mit privatem Schlüssel).
Importieren öffentlicher Schlüssel in AWS EC2 und anderen Cloud-Panels
AWS-Konsole: EC2 > Schlüsselpaare > Schlüsselpaar importieren. Dateiname und Inhalt .pub Eingeben.
Beim Erstellen einer Instanz können Sie ein vorhandenes Schlüsselpaar auswählen. Andere Rechenzentren bieten häufig eine Option zum Hochladen/Importieren von SSH-Schlüsseln im Bedienfeld an.
cloud-init-Beispiel zum Hinzufügen eines öffentlichen Schlüssels
#cloud-config
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]Füge den Schlüssel zu GitLab/GitHub hinzu und verwende ihn in der CI.
Für GitLab: Benutzereinstellungen > SSH-Schlüssel Fügen Sie den öffentlichen Schlüssel ein. Gehen Sie zum Projekt, um die Schlüssel bereitzustellen.
In CI/CD laden Sie den privaten Schlüssel als geschützte Variable hoch und verwenden ihn im Job, indem Sie eine Datei mit eingeschränktem Zugriff erstellen (chmod 600).
Server- und Sicherheitseinstellungen nach der Schlüsselinstallation
Schritt 1: Berechtigungen festlegen.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519Dann Einstellungen /etc/ssh/sshd_config Prüfen und aktualisieren:
Passwortauthentifizierung Nr.
PermitRootLogin nein
PubkeyAuthentication yes
Du kannst Benutzer zulassen Um die Benutzeranzahl einzuschränken, wurde diese Einstellung vorgenommen.
UseDNS no Und ändern Sie gegebenenfalls den Port.
sudo systemctl restart sshdFirewall:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw allow 2222/tcpVerwenden Sie Fail2ban oder CrowdSec, um Brute-Force-Angriffe zu verhindern:
sudo apt install fail2banFür sensible Server sollten Bastion-/Jump-Hosts verwendet werden, um den direkten Zugriff auf private Netzwerke einzuschränken.
Praktische Tipps für verschiedene Anwendungen
Für Trader (VPS für den Handel)
Wählen Sie einen Standort: Nähe zu Broker- oder Börsenservern für geringste Latenzzeiten. Wir verfügen über mehr als 85 Standorte weltweit, die Ihnen einen Standort in der Nähe Ihres Zielmarktes bieten können.
Es wird empfohlen, SSH auf statische IP-Adressen oder VPN zu beschränken:
sudo ufw allow from 203.0.113.5 to any port 22Für Gamer (Gaming-VPS)
Für Spielserver sollten Standorte mit starker Peering-Verbindung und geeignetem CDN/BGP verwendet werden. Zur Reduzierung der Angriffsfläche sollten SSH-Schlüssel anstelle von Passwörtern und ein Bastion-Host eingesetzt werden.
Für KI und Rendering (GPU-Cloud)
Verwenden Sie starke Schlüssel (ed25519/RSA4096), um eine Verbindung zu GPU-Servern herzustellen, und weisen Sie jedem Projekt einen separaten Benutzer und Schlüssel zu.
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -p 2222" /local/path user@remote:/remote/pathFür Hosting und GitLab-Hosting
Verwenden Sie einen serverspezifischen Schlüssel (Bereitstellungsschlüssel) mit eingeschränktem Zugriff, um automatisch auf den Server und private Repositories zuzugreifen.
Schlüsselmanagement, Rotation und Standards
Die Schlüssel sollten regelmäßig ausgetauscht werden (z. B. alle 6 bis 12 Monate).
Entfernen Sie die alten Schlüssel von
autorisierte_SchlüsselUnd löschen Sie das Cloud-Panel.Verwenden Sie die Passphrase für den privaten Schlüssel und speichern Sie ihn in einem Passwortmanager.
In Organisationen sollten SSH-Zertifikate und eine Zertifizierungsstelle (CA) für die zentrale Verwaltung (OpenSSH CA) verwendet werden.
Zusätzliche Tipps und Fehlerbehebung
Wenn man mit einem Fehler konfrontiert wird Zugriff verweigert (öffentlicher Schlüssel) Prüfen Sie, ob sich der öffentliche Schlüssel in ~/.ssh/authorized_keys Es existiert und die Berechtigungen sind korrekt.
sudo journalctl -u sshd -e
sudo tail -f /var/log/auth.logWenn Sie ProxyJump oder Jump Host verwenden, ist die Konfigurationsdatei hilfreich:
Host bastion
HostName bastion.example.com
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host internal-*
ProxyJump bastion
User deploy
IdentityFile ~/.ssh/id_deployAus ServerAliveInterval Und ServerAliveCountMax In der SSH-Konfiguration verwenden, um plötzliche Verbindungsabbrüche zu verhindern.
Abschließende Sicherheitsempfehlungen
Weitere wichtige Punkte sind die Beschränkung des SSH-Zugriffs auf IPs, die Verwendung eines VPNs oder eines privaten Netzwerks sowie der Einsatz von Anti-DDoS-Diensten für sensible Server.
Zusammenfassung und empfohlene Checkliste
Schlüsselerstellung: ed25519 mit Passphrase
Dateischutz:
chmod 700 ~/.ssh && chmod 600 private_keySSH-Agent aktivieren und Schlüssel hinzufügen
Laden Sie den öffentlichen Schlüssel in das AWS-Panel oder Rechenzentrum hoch oder verwenden Sie cloud-init.
Deaktivieren der Passwortauthentifizierung und der Root-Anmeldung
Firewall/UFW und Fail2ban oder CrowdSec
Nutzung von Bastion-Systemen, IP-Beschränkungen und VPN für sensible Zugriffe
Regelmäßige Schlüsselduplizierung und -rotation









