SSH протокол доступен в двух несовместимых вариантах: SSH 1 и SSH 2
Cтарый SSH 1 протокол доступен в двух версиях: 1.3 и 1.5. Оба поддерживаются в OpenSSH, и используют криптографический асимметричный алгоритм RSA (срок действия патента в USA истёк, так что теперь его можно свободно использовать) для обмена ключами, и небольшой список симметричных алгоритмов для шифрования данных: 3DES и Blowfish (использовались и другие алгоритмы, например RC4, но в их реализации были обнаружены проблемы безопасности). Некоторые реализации протокола SSH 1 поддерживали симметричный алгоритм IDEA, однако из-за того, что но запатентован в некоторых странах, а так же по причине того, что двух других алгоритмов вполне достаточно, OpenSSH не поддерживает IDEA.
Протокол SSH 1 использует простой алгоритм CRC для целостности данных, который, однако, оказался уязвим к так называмой атаке вставки (insertion attack), однако множество исправлений, которые были добавленны в реализацию SSH в последние несколько лет, делают эту атаку очень сложной. При использовании 3DES, атака вставки маловероятна.
Вторая главная разновидность SSH - это протокол SSH 2. Он был разработан, чтобы избежать проблем с патентом RSA (более не существующей проблемы, так как срок действия патента истёк), и чтобы устранить проблему CRC целостности данных, а так же по ряду других технических причин. Используя асимметричные алгоритмы DSA и DH, SSH 2 не имеет проблем с патентами. Проблема CRC решена использованием алгоритма HMAC. Протокол SSH 2 поддерживает множество симметричных алгоритмов шифрования, а так же множество новых возможностей.
Код OpenSSH с полной поддержкой протоколов SSH 1.3 и SSH 1.5 распространяется с 1 декабря 1999 года.
Для множества своих криптографических возможностей OpenSSH использует не-GPL библиотеку OpenSSL.
После того, как мы выпустили нашу реализацию протокола SSH 1, многие другие группы заинтересовались проектом. Damien Miller, Philip Hands и многие другие начали портировать OpenSSH на GNU/Linux и на другие Unix операционные системы. Перед появлением нашего проекта мы чувствовали, что даже оригинальная реализация SSH была усложнена; она имела очень много зависимостей от операционных систем. Наш подход к написанию безопасного и чистого кода позволил избежать этого: мы сделали процесс разработки проще для всех - отделили основную разработку от портирования.
Продолжая эту тенденцию, разработчики OpenBSD из команды OpenSSH, реализовали поддержку протокола SSH 2. Работа была проделана в основном Markus Friedl. 4 мая 2000 года поддержка протокола SSH 2 была завершена и готова к использованию.