Interaktív bejelentkezést, parancsok végrehajtását teszi lehetővé távoli
gépen RSA-kódolt csatorna fölött. Tekinthető az rsh (rlogin, telnet)
titkosított párjának. Egy ssh-szervert futtató gép egy ssh kapcsolatban magát
a nyilvános RSA-kulcsával (pontosabban annak nyomával) azonosítja.
A kommunikáció elején a szerver elküldi a nyilvános kulcs nyomát a kliensnek, aki így dönthet a kulcs
érvényességéről. Ennek elfogadását jelezzük akkor, mikor az első
bejelentkezésnél yes-t írunk, és ekkor kerül be a kulcs nyoma a known_hosts
fájlba. Tulajdonképpen ez az egyetlen támadható pontja a kommunikációnak.
Ritkán fordul elő, hogy ezen a ponton bárki is felhívná a rendszergazdát,
hogy igazolja vissza a kulcs érvényességét (bár így volna teljesen
tiszta a dolog). Pedig ha itt egy támadó egy általa generált kulcsot küld
vissza, amit a kliens oldal elfogad, akkor birtokában lehet minden átmenő
csomagnak.
Ezért van az, hogy ha upgrade-elik az ssh-szervert, amitől új RSA-hostkulcs generálódik,
akkor a kliensek hajlamosak panaszkodni emiatt ("man-in-the-middle attack").
Ilyen esetben Linuxos gépen a $HOME/.ssh/known_hosts fájlból
törölni kell a szerverre vonatkozó sort (amiben még a régi kulcs nyoma van).
Ideális esetben (azaz, ha a kliens által ismert kulcs helyes, és érvényes) a
gépelt parancsok, jelszó, stb. a hálózaton egy harmadik résztvevő számára nem
hallhatók, de legalábbis polinomiális idő alatt nem megfejthetők. Az ssh1
protokoll (elavultnak mondható, de még sok helyen használják) hibája, hogy ha
a jelszó nem is, a jelszó hossza lehallgatható, így kiderül, hogy van-e értelme
próbálgatásnak. Az ssh2 protokoll már többek közt ezt a hibát is kiküszöböli.