In einem ersten Schritt authentifizieren sich SSH-Server und Client untereinander. Der Server sendet ein Zertifikat an den Client, um zu verifizieren, dass es sich wirklich um den richtigen Server handelt. Nur bei der ersten Kontaktaufnahme besteht die Gefahr, dass sich ein Dritter zwischen die beiden Teilnehmer schaltet und so die Verbindung abfängt. Da das Zertifikat selbst auch verschlüsselt ist, kann es nicht imitiert werden. Weiß der Client einmal, wie das richtige Zertifikat lautet, kann kein anderer mehr vortäuschen, über den entsprechenden Server Kontakt aufzunehmen.
Nach der Server-Authentifizierung muss sich aber auch der Client gegenüber dem Server als zugangsberechtigt ausweisen Dafür kann man ein Passwort einsetzen. Dieses – beziehungsweise der verschlüsselte Hashwert davon – ist auf dem Server hinterlegt. Daraus resultiert aber auch, dass Nutzer bei jeder Anmeldung auf einem anderen Server während der gleichen Sitzung das Passwort eingegeben müssen. Deshalb gibt es als alternative Möglichkeit der clientseitigen Authentifizierung die Verwendung des Schlüsselpaares Public Key und Private Key.
Den Private Key erstellt man individuell für seinen eigenen Computer und sichert diesen mit einer Passphrase ab, die länger sein sollte als ein typisches Passwort. Der Private Key ist ausschließlich auf dem eigenen Rechner gespeichert und bleibt stets geheim. Möchte man eine SSH-Verbindung aufbauen, gibt man zunächst die Passphrase ein und öffnet so den Zugang zum Private Key.
Auf dem Server wiederum (wie auch auf dem Client selbst) liegen ebenfalls noch Public Keys. Der Server erstellt mit seinem Public Key ein kryptografisches Problem und sendet dies an den Client. Dieser wiederum entschlüsselt das Problem mit dem eigenen Private Key, sendet die Lösung zurück und teilt so dem Server mit, dass er eine rechtmäßige Verbindung aufbauen darf.
Während einer Sitzung muss man die Passphrase nur einmal eingeben, um Verbindung zu beliebig vielen Servern aufzunehmen. Zum Schluss der Sitzung melden sich die Nutzer an ihren lokalen Rechnern ab und stellen so sicher, dass kein Dritter, der physischen Zugang zur lokalen Maschine erhält, eine Verbindung zum Server aufnehmen kann.