Client-Authentifizierung
Bei Verwendung des Default-Wertes für die Option PreferredAuthentication in der Client -Konfigurationsdatei ssh_config (siehe Abschnitt „OpenSSH Client konfigurieren“) führt der OpenSSH Client der Reihe nach folgende Authentifizierungsmethoden durch:
hostbased-Authentifizierung
Public Key-Authentifizierung
Passwort-Authentifizierung
Die Verfahren werden der Reihe nach angewendet, bis ein Verfahren erfolgreich authentifiziert hat bzw. bis alle Verfahren gescheitert sind.
Die Public Key-Authentifizierung gestattet die Verwendung von RSA-, DSA-, ECDSA und Ed25519-Algorithmen. Der OpenSSH Client signiert die Session-Id zusammen mit anderen Daten mit seinem privaten Schlüssel ($HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa, $HOME/.ssh/id_ecdsa oder $HOME/.ssh/id_ed25519) und sendet das Ergebnis an den OpenSSH Server. Der Server prüft, ob in der Datei <user home>/.ssh/authorized_keys ein passender öffentlicher Schlüssel enthalten ist. Wenn ja, dann nimmt der Server die Verbindung an. Dabei ist <user home> das Home-Verzeichnis desjenigen Users , mit dessen Kennung sich der ssh-Aufrufer anmelden will.
SSH verwendet u.a folgende Mechanismen, die Vertraulichkeit und Integrität der Verbindung sicherstellen:
Vertraulichkeit ist gewährleistet durch Verschlüsselung des Datenverkehrs mithilfe von AES, ChaCha20 oder 3DES.
Integrität ist gewährleistet durch Verschlüsselung des Datenverkehrs mit hmac-sha2, hmac-sha1 oder umac.
Server-Authentifizierung
Der OpenSSH-Client ssh authentifiziert den Server, indem er prüft, ob für das jeweilige System ein öffentlicher Schlüssel in der Datei $HOME/.ssh/known_hosts des Benutzers oder in der vom Systemadministrator zentral bereitgestellten Datei /etc/ssh/ssh_known_hosts hinterlegt ist. Falls ja, wird überprüft, ob dieser Schlüssel mit dem vom sshd gesendeten Host-Key gleichen Typs (RSA/DSA/ECDSA/Ed25519) übereinstimmt.
Die Option StrictHostKeyChecking in der Konfigurationsdatei ssh_config steuert das Verhalten des Clients für den Fall, dass in den known_hosts-Dateien kein passender Eintrag gefunden wird:
Bei no wird der bislang unbekannte Host-Key ohne Nachfrage in $HOME/.ssh/known_hosts eingetragen, bei ask wird der Benutzer gefragt, ob der Host-Key eingetragen werden soll.
Bei yes wird der Host-Key nie vom Client eingetragen, sondern muss vom Anwender bzw. vom Systemadministrator in die jeweilige known_hosts-Datei eingetragen werden.
Eine ausführliche Beschreibung der Option StrictHostKeyChecking finden Sie auf den Man Pages von OpenSSH.