Leegyszerűsítve, mert jóval bonyolultabb azért:
A kliens csatlakozik a szerverhez.
A szerver elküldi a host-key -t.
A kliens megnézi, hogy megvan-e már a host-key neki ehhez a szerverhez.
Ha már megvan, akkor összehasonlítja.
Ha nem egyezik a meglévő host-key a most kapottal, akkor figyelmeztet, hogy possible mitm attack.
Ha nincs még meg ennek a szervernek a host-key -e, akkor a kliens erről szól neked, kiírja a kulcsot, s megerősítést kér a kapcsolatra.
Ha engeded, akkor elmenti a host-keyt a tárolóba.
A kliensed elküldi a kliens-kulcs publikus részét.
A szerver generál egy session-keyt (általában aes szokott lenni a crypto algoritmus).
Ezt a session-keyt elküldi a kliensnek a a kliens publikus RSA kulcsával kódolva.
Innentől a szerver és a kliens a szimmetrikus algoritmusra váltanak az RSA helyett.
Itt történik a felhasználó azonosítása (user/pass bekérése). Ha kulcsos authentikáció volt megadva, nem jelszavas, akkor ez a lépés kimarad.
A szerver indít egy shellt, és shell stdout handle-jét ráirányítja a socket-re, uyanígy az stdin handle-jét is a socketre.
Időnként lecserélik a session-key -t, szintén az RSA kulcssere algoritmussal, mint az elején.
A kulcsos authentikáció annyiban különbözik, hogy nem kér jelszót a szerver, hanem a kliens egy másik RA kulccsal azonosítja, ennek google -val te is utána tudsz nézni.