SSH - only key
SSH: Schlüssel mit Passphrase & nur-Key-Login (root & jj)
DieseZiel: AnleitungAuf beschreibt,dem wie auf einem Client ein Ed25519-Schlüsselpaar mit starker Passphrase erstellterzeugen und in der~/.ssh/config
SSH-Konfiguration hinterlegt wird.hinterlegen. Auf dem Server wird der LoginLogins für root
und jj
auf Public-Key-AuthAuthentifizierung beschränkt.nken.
Platzhalter / Variablen
SERVER_IP
: IP oderDNS-NameFQDN desZielservers.Zielservers$Dieser_Client
:Klartext-Kommentar (z. B. Hostname des Clients), wird in den Public Key geschrieben.little-ghost
:Name des Schlüssel-Unterordners (frei wählbar).hlbarer Schlüsselnamens-Ordner
1) Client: SSH-Key mit Passphrase erzeugen
Im
Befehl Passwort-Manager eine stabile Passphrase anlegen und für den Private Key verwenden.(kopierbar)
root@little-snitch:/root # ssh-keygen \
-t ed25519 \
-a 2048 \
-o \
-Z aes256-ctr \
-C "$Dieser_Client" \
-f "/root/.ssh/JSc/little-ghost/id_ed25519"
Beispielausgabe
Generating public/private ed25519 key pair.
Enter passphrase for "/root/.ssh/JSc/little-ghost/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/JSc/little-ghost/id_ed25519
Your public key has been saved in /root/.ssh/JSc/little-ghost/id_ed25519.pub
The key fingerprint is:
SHA256:**************************** little-ghost
The key's randomart image is:
+--[ED25519 256]--+
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
+----[SHA256]-----+
Optional: WasRechte bedeutensetzen
-t ed25519: Moderner, schneller Kurvenschlüssel.-a 2048: Erhöht KDF-Runden (Passphrase-Härtung, groß aber ok).-o: Neues OpenSSH-Schlüsselformat.-Z aes256-ctr: Verschlüsselungs-Cipher für den Private Key.-C: Kommentar (z. B. Client-Name).-f: Zielpfad für Schlüsseldateien.
Beispielausgabe
# (keine Ausgabe bei Erfolg)
# Kontrolle:
ls -ld /root/.ssh /root/.ssh/JSc /root/.ssh/JSc/little-ghost
ls -l /root/.ssh/JSc/little-ghost/
2) Client: SSH-Konfiguration für Zielhost
DateiIn /root/.ssh/config
bearbeiten bzw. anlegen:eintragen/ergänzen:
root@little-snitch:/root # nano /root/.ssh/config
Eintrag hinzufügen
Dateiinhalt (oder anpassen):kopierbar)
Host SERVER_IP
HostName SERVER_IP
IdentitiesOnly yes
IdentityFile /root/.ssh/JSc/little-ghost/id_ed25519
ForwardAgent no
ForwardX11 no
StrictHostKeyChecking ask
UserKnownHostsFile /root/.ssh/known_hosts
3) Client: Public Key anzeigenanzeigen/kopieren
Public Key zum Hinterlegen auf dem Server
Befehl (z. B. in ~/.ssh/authorized_keys
):kopierbar)
root@little-snitch:/root # cat /root/.ssh/JSc/little-ghost/id_ed25519.pub
Beispielausgabe
ssh-ed25519 AAAAAAAAAABBBBBBBBBB/CCCCCCCCCC little-ghost
Den gesamtenDiesen Einzeiler in die Datei /root/.ssh/authorized_keys des Ziel-Benutzers auf dem Server kopierenin die Datei ~<user>/.ssh/authorized_keys
einfügen (z.eine B.Zeile perpro temporäremKey, Passwort-Login,keine Konsole oder scp)Umbrüche).
4) Server: nur Public-Key-Login erlauben
root
nur mitper Public Key
Datei /etc/ssh/sshd_config.d/10-root-only-key.conf
anlegen/bearbeiten:ändern.
Dateiinhalt (kopierbar)
root@server:/# nano /etc/ssh/sshd_config.d/10-root-only-key.conf
# Root: nur noch Public-Key, keine Passwörter/Keyboard-Interactive
Match User root
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
AuthenticationMethods publickey
PermitRootLogin prohibit-password
Beispielausgabe
# Kontrolle:
cat /etc/ssh/sshd_config.d/10-root-only-key.conf
5) Server: jj
nur mitper Public Key
Datei /etc/ssh/sshd_config.d/20-jj-only-key.conf
Dateiinhalt (kopierbar)
root@server:/# nano /etc/ssh/sshd_config.d/20-jj-only-key.conf
# jj: nur noch Public-Key, keine Passwort-/Keyboard-Interactive-Logins
Match User jj
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
AuthenticationMethods publickey
Konfiguration6) Server: Syntax prüfen & Dienst neu laden
Syntaxtest
undReload:
Befehl (kopierbar)
root@server:/# sshd -t
root@server:/# sleep 30
root@server:/#
systemctl reload ssh # ←Debian-Standarddienstname
Dienstname
Beispielausgabe
# Bei korrekter Konfiguration keine Ausgabe.
# Alternativ,Fehler fallswürden vorhanden:hier #mit systemctlZeile/Datei reloadgemeldet sshd
werden.
Neuen
7) Client: Login auszum einerServer zweitentesten
testen,
Befehl die(kopierbar)
Sitzung beendet wird:
root@little-snitch:/root # ssh SERVER_IP
Beispielausgabe
The authenticity of host 'SERVER_IP (SERVER_IP)' can't be established.
ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'SERVER_IP' (ED25519) to the list of known hosts.
Enter passphrase for key '/root/.ssh/JSc/little-ghost/id_ed25519':
Last login: Wed Sep 24 12:34:56 2025 from 203.0.113.42
root@server:~#
Hinweise
Fehlerbehebung
Passphrase:Sicher im Passwort-Manager speichern. Kein leeres Passwort verwenden.- Dateirechte: Verzeichnisse
700
, PrivateKeysKey600
,VerzeichnissePublic Key700644. Falsche Rechte führen zu „unprotected private key file“. authorized_keys:Jeder Public-Key in einer Zeile, keine Umbrüche oder zusätzliche Leerzeichen.Dienstname:Auf Debian ist der Service in der Regelssh.service.sshdkann fehlen.Fehler „Permission denied (publickey)“:Prüfen: falscher User, Key liegt nicht in~<user>/.ssh/authorized_keys, Rechte, oder Client nutzt nicht das gewünschteIdentityFile(mit-vdebuggen).- Known Hosts:
ErsterDateiVerbindungsaufbau schreibt den Host-Key inheißt
(nicht/root/.ssh/known_hostsknown_hos
). - Debug bei Problemen:
ssh -v SERVER_IP
zeigt, welchen Key der Client nutzt.
Stand: 25.09.2025 – Autor: <Dein Name>