OpenSSH История проекта


В 1999 году некоторые разработчики OpenBSD поставили перед собой задачу сделать SSH открытой и свободной для всех, включая использование соответствующей лицензии, а также поддерживать код, создаваемой реализации.

OpenSSH основан на свободной версии SSH 1.2.12 от Tatu Ylönen. Эта версия была достаточно свободной, для использования её в нашем проекте. Некоторые части OpenSSH все ещё находится под лицензией Tatu. Эта и более старые версии использовали математические функции из библиотеки libgmp. Библиотека libgmp доступна под (LGPL) Lesser GNU Public Licence, хотя в то время она находилась под обычной (GPL) GNU Public Licence.

Объединённая лицензия для всех частей OpenSSH доступна на https://cvsweb.openbsd.org/src/usr.bin/ssh/LICENCE.

Вскоре после выпуска Tatu версии 1.2.12, последующие версии выпускались со все более ограничивающими лицензиями, хотя libgmp все ещё был включён и необходим для использования SSH. Это фактически сделало SSH нарушителем GPL. Первая из ограничивающих лицензий запрещала собирать версии для Windows и DOS версии. Позднее они и вовсе запретили использование SSH в коммерческих целях, предлагая купить достаточно дорогую версию у компании Datafellow.

В начале 1999 года Björn Grönvall начал разбираться в работе старой версии последней версии и исправлять ошибки. Его версия SSH называется OSSH, и на тот момент она поддерживала только SSH протокол версии 1.3. Говорят, что OSSH был интегрирован в какой-то коммерческий продукт в Швеции. В OSSH никогда поддерживал вторую версию протокола SSH. Björn, вероятно, прекратил разработку, когда OpenSSH стал достаточно стабильным.

Участники проекта OpenBSD узнали о работе Björn'а менее чем за два месяца до релиза OpenBSD 2.6. Мы хотели включить поддержку ssh протокола в OpenBSD 2.6, но мы должны были убедится в том, что OSSH идеальна (to make sure that it was perfect). Поэтому мы решили взять за основу OSSH и продолжить работу над форком, используя тот же процесс аудита безопасности, какой используется и для остальной части OpenBSD. Первоначальный коммит был сделан 26 сентября 1999 года, и на момент релиза, два месяца спустя, многие из файлов с кодом уже были в RCS версии 1.34... некоторые даже версии 1.66. Процесс разработки шел очень быстро, так как мы deadline был уже не за горами.

Список разработчиков:

OpenSSH основан на старой версии ssh 1.2.12, но с удалением многих ошибок и добавлением новых возможностей:

Это относится к OpenSSH 1.2.2, который был включён в OpenBSD 2.6, 1 декабря 1999 года. С того времени, в разработке OpenSSH участвовали Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt, и Dug Song. Мы благодарим тех, кто нашёл ошибки и сообщил нам о них.

Портированние OpenSSH

Почти сразу после того, как мы выпустили нашу реализацию протокола SSH 1, многие различные группы, не относящиеся к OpenBSD, заинтересовались проектом. Damien Miller, Philip Hands и многие другие начали портировать OpenSSH на GNU/Linux и на другие Unix-образные операционные системы. С самого начала нашей работы над проектом мы почувствовали, что даже оригинальная реализация SSH была слишком сложной; она имела очень много зависимостей операционной системы. Наш подход к написанию полностью безопасного, надежного и чистого кода позволил избежать этого. Чтобы облегчить процесс разработки для всех, мы отделили базовую разработку от разработки над процессом портирования. Это очень хорошо сработало для нас. (В качестве примера, сравните количество строк кода между базовой и переносной версиями).

Поддержка протокола SSH 2

После выхода OpenBSD 2.6 Markus Friedl решил продолжить поддержку протокола SSH 2. Работая несколько месяцев, он сумел сохранить OpenSSH таким же простым и маленьким, но в тоже время совместить поддержку обоих протоколов SSH 1 и SSH 2. Эта версия называлась OpenSSH 2.0 и была включена в OpenBSD 2.7 15 июня 2000 года. Проверкой изменений, сделанных Markus'ом, занимались Niels Provos и Theo de Raadt. Боба Бека (Bob Beck) следует поблагодарить за обновление externa библиотеки SSL до более новой версии.

Поддержка SFTP

Поддержка серверной части sub-protocol SFTP была реализована Markus Friedl и включена в OpenSSH 2.3.0 в ноябре 2000 года. Вскоре после этого Damien Miller начал работу над sftp-клиентом, который появился в OpenSSH версии 2.5.0.

Сканирование версий SSH сервера

Для облегчения мониторинга используемых SSH-серверов, например для сети компании, Niels Provos написал утилиту scanssh. scanssh сканирует список адресов и сетей на наличие SSH-серверов и номера их версий. Она поддерживает случайный выбор IP-адресов из больших диапазонов сети и полезна для сбора статистики об использовании SSH-серверов в компании или в Интернете в целом. Статистика включает поддерживаемые SSH-протоколы и используемые версии SSH-серверов.