SSH nutzt für die Authentifizierung öffentliche Schlüssel, die vom entfernten System übermittelt werden. Wenn ein SSH-Client eine Verbindung zu einem SSH-Server aufbauen will, übermittelt der Server den öffentlichen Schlüssel an den Client, der diesen Schlüssel dann in seinen Dateien sucht. Die folgenden Situationen können dabei auftreten:
- Der SSH-Client findet den Schlüssel in seiner Liste der bekannten Server-Schlüssel, und der Schlüssel ist dem entsprechenden Hostnamen bzw. der IP-Adresse zugeordnet. Die SSH-Verbindung kann dann ohne weitere Benutzeraktivität aufgebaut werden.
- Der SSH-Client findet den Schlüssel nicht in seiner Liste der bekannten Server-Schlüssel, und auch keinen anderen Schlüssel vom gleichen Typ (RSA bzw. DSA/DSS) für den entsprechenden Hostnamen bzw. die IP-Adresse. Der SSH-Client geht davon aus, dass es die erste Verbindung zu diesem Server ist und zeigt den öffentlichen Schlüssel und den zugehörigen Fingerabdruck (Fingerprint) an. Der Anwender kann den Schlüssel mit einer auf anderem Wege übermittelten Version verifizieren und entscheiden, ob der Server in der Liste der bekannten SSH-Server gespeichert werden darf. Wenn der Anwender diese Verifizierung ablehnt, wird die SSH-Verbindung sofort beendet.
- Der SSH-Client findet einen Schlüssel für den entsprechenden Hostnamen bzw. die IP-Adresse, dieser weicht aber von dem aktuell verwendeten Schlüssel ab. Beide Schlüssel werden angezeigt, dann wird die SSH-Verbindung beendet, weil der SSH-Client eine Man-in-the-middle-Attacke vermutet. Sofern das entfernte System den öffentlichen Schlüssel kürzlich geändert hat, muss der Administrator den veralteten Eintrag aus der Liste der bekannten Server löschen (siehe Bekannte SSH-Serverschlüssel manuell entfernen.
Nach der erfolgreichen Verifikation des Server-Schlüssels kann der Administrator das Passwort zur Anmeldung am entfernten System eingeben. Das Passwort kann nicht direkt über den Kommandozeilenbefehl eingegeben werden.
SSH-Verbindungen werden üblicherweise durch den Server beendet, z. B. durch Eingabe von exit in der Shell. In manchen Fällen ist es nötig, die SSH-Verbindung durch den Client zu beenden, z. B. wenn die Anwendung auf der Server-Seite gestört ist. Der SSH-Client im LCOS verwendet die gleiche Zeichenfolge wie OpenSSH zum Beenden einer Verbindung, also die Folge 'Tilde – Punkt'.