Alles rund um ssh
Public-Key Authetifizierung
Quelle:
https://www.ssh.com/ssh/public-key-authentication
Public-Key Authentifizierung erlaubt das Einloggen mittels SSH ohne Passwortabfrage. Dies ist insbesondere für RSYNC-Backups sehr nützlich.
- Schlüsselpaar auf dem Client erzeugen
client# ssh-keygen
- Öffentlichen Schlüssel auf dem Server speichern
server# vi ~/.ssh/authorized_keys
Dann den inhalt der Datei des öffentlichen Schlüssels des Clients an diese Datei anfügen.
Hilfreiche Befehle
Fingerabdrücke / Fingerprints von SSH-Schlüsseln anzeigen
Kurz:
find /etc/ssh -iname "*.pub" -exec ssh-keygen -l -E md5 -f '{}' ';' -exec ssh-keygen -l -E sha256 -f '{}' ';'
Für ssh-keygen Versionen < 6.8 wird die Option -E nicht unterstützt:
find /etc/ssh -iname "*.pub" -exec ssh-keygen -l -f '{}' ';'
Oder mühsam von Hand:
- Programm: ssh-keygen
- Parameter "-l": Fingerabdruck anzeigen
- Parameter "-E": Hash-Algorithmus, z.B. "md5" oder "sha256"
- Parameter "-f in_file": Schlüssel aus Datei in_file lesen
# ssh-keygen -l -E md5 -f ssh_host_dsa_key.pub
# ssh-keygen -l -E sha256 -f ssh_host_dsa_key.pub
# ssh-keygen -l -E md5 -f ssh_host_ecdsa_key.pub
# ssh-keygen -l -E sha256 -f ssh_host_ecdsa_key.pub
# ssh-keygen -l -E md5 -f ssh_host_rsa_key.pub
# ssh-keygen -l -E sha256 -f ssh_host_rsa_key.pub
Fingerabdruck Hash-Mismatch
Siehe auch:
https://superuser.com/questions/929566/sha256-ssh-fingerprint-given-by-the-client-but-only-md5-fingerprint-known-for-se
Problem
In neueren Versionen von ssh werden bei der ersten Verbindung sha256-Fingerprints auf Client-Seite angezeigt. Diese lassen sich jedoch nicht mit alten MD5-Fingerprints vergleichen. Beispiel:
ECDSA key fingerprint is SHA256:TfWR7a5dxJLmPZQl8Oxp/roV35dnV6eiTMuMrXvectA.
Aber der bekannte ECDSA-Fingerprint lautet:
ECDSA: 94:09:38:26:16:08:07:d4:25:c7:db:63:aa:6f:1f:e1
Lösungsvarianten
- Fingerprints mit sha265-hash auf Server prüfen (siehe oben). Ist aber nur möglich mit ssh-keygen Version >= 6.8
- Fingerabdrücke vom Server manuell auf einen anderen Rechner kopieren, auf dem ssh-keygen in Version >= 6.8 verfügbar ist und den neuen Hash anzeigen lassen.
- Workaround: Temporär md5-Fingerabdrücke nutzen
ssh -o FingerprintHash=md5 <HOSTNAME>;