SSH gibt es in zwei Varianten. Das ältere Protokoll 1 hat zwei Varianten: Protokoll 1.3 und Protokoll 1.5. Beide werden von OpenSSH unterstützt. Beide benutzen benutzen den asymmetrischen Kryptografie-Algorithmus RSA (der in den USA nun auch nicht mehr patentiert ist und daher von jedem benutzt werden kann) um Schlüssel zu verhandeln und nutzen dann eine kleine Auswahl von symmetrischen Algorithmen um die Daten zu verstecken: 3DES und Blowfish (es gab einmal ein paar andere, die aber wegen Sicherheitsproblemen fallengelassen wurden). Einige ssh Implementationen enthalten auch den symmetrischen IDEA Algorithmus, aber da er in einigen Nationen patentiert ist, und die anderen beiden bereits benutzen Algorithmen ausreichend sind, wird OpenSSH ohne IDEA ausgeliefert.
Das SSH Protokoll 1 benutzt ein einfaches CRC um die Daten Integrität sicherzustellen, was sich als beschädigt herausstellte; eine "insertion attack" ist bekanntermassen möglich, jedoch sind Angriffe wegen der Menge an "Heftpflastern", die über die Jahre auf ssh ausfgeklebt wurden, überaus schwierig durchzuführen. Wird die 3DES-Chiffre verwendet, ist die "insertion attack" nicht möglich.
Die andere SSH Variante ist Protokoll 2. Protokoll 2 wurde eingeführt, um die Patent-Schwierigkeiten in bezug auf RSA zu vermeiden (die aber nun nicht mehr existieren, da das Patent abgelaufen ist), und das CRC Datenintegritätsproblem von SSH1 zu beheben. Durch die Benutzung der asymmetrischen DSA und DH Algorithmen vermeidet Protokoll 2 alle Patente. Das CRC-Problem wird durch die Benutzgun eines richtigen HMAC Algorithmus.
OpenSSH Code beinhaltet volle Protokoll 1.3 und 1.5 Unterstützung seit dem 1. Dezember 1999.
Für viele Kryptografie Features greift OpenSSH auf die nicht-GPL lizenzierte OpenSSL Library zurück.
Fast sofort nachdem wir unsere Protokoll 1 Implementation veröffentlicht hatten, waren viele nicht-OpenBSD-Gruppen sehr,sehr interessiert. Damien Miller,Philip Hands, und eine handvoll anderer begannen damit OpenSSH auf Linux und verschiedene andere Unix-Betriebssysteme zu portieren. Vom Anfang unserer Bemühungen an hatten wir das Gefühl, dass sogar der originale ssh Code zu kompliziert war, er hatte einfach zu viele Abhängigkeiten von Betriebssystemen in sich. Unser Anspruch komplett sicheren und absolut stabilen Code zu schreiben vermeidet es natürlich sich mit solchen übermässigen Unterschieden umzugehen. Um daher den gesamten Entwicklungsprozess für uns alle einfacher zu machen, haben wir die Kern Entwicklung von der Portabilität getrennt. Das hat für uns sehr gut funktioniert. (Vergleiche doch mal die Anzahl Zeilen zwischen der Basis- und portablen Versionen).
Seitdem haben die OpenBSD Projekt Mitglieder, die an OpenSSH arbeiten, auch eine grosse Anstrengung unternommen um auch Protokoll 2 zu unterstützen. Seit dem 4. Mai 2000 ist Protokoll 2 komplett eingegliedert.
Also unterstützt OpenSSH seit dem 4. Mai 2000 auch Protokoll 2. Aber da Protokoll 1 Clients und Server immer noch populärer im Internet sind, unterstützen wir weiterhin Protokoll 1.