Как исправить ошибки “OpenSSL_version… no” и “OpenSSL_version_num” при компиляции openssh-9.9p2?

Вопрос или проблема

Centos 6 – 2.6.32-573.el6.x86_64 #1 SMP Чт Июл 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Я скомпилировал openssl-3.0.16. Теперь я пытаюсь скомпилировать openssh-9.9p2.

./configure –prefix=/usr –with-pam –with-selinux –with-privsep-path=/var/lib/sshd/ –sysconfdir=/etc/ssh –with-ssl-dir=/usr/local/include/openssl

Я получаю:

checking for openssl... /usr/local/bin/openssl
checking for openssl/opensslv.h... yes
checking OpenSSL header version... 30000100 (OpenSSL 3.0.16 11 Feb 2025)
checking for OpenSSL_version... no
checking for OpenSSL_version_num... no
checking OpenSSL library version... not found
configure: error: OpenSSL library not found.

Я нашел это “Is OpenSSL_version_num() deprecated? #17517” https://github.com/openssl/openssl/issues/17517

Эта команда сработала.

./configure --prefix=/usr --with-pam --with-selinux --with-privsep-path=/var/lib/sshd --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl-3.0.16

Затем мне пришлось закомментировать две строки в /etc/ssh/sshd_config:

# GSSAPI options
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes

Затем make install завершился успешно.

Ответ или решение

Для решения проблемы компиляции OpenSSH 9.9p2 с сообщениями об ошибках "OpenSSL_version… no" и "OpenSSL_version_num… no", вам необходимо учитывать несколько ключевых моментов, касающихся совместимости и правильной конфигурации используемых библиотек OpenSSL.

Теория

Проблема начинается с того, что OpenSSH пытается использовать функции и заголовки OpenSSL для выполнения криптографических операций. Поскольку OpenSSL – это библиотека, обеспечивающая SSL и TLS протоколы, а также разнообразные криптографические функции, правильное взаимодействие между OpenSSH и OpenSSL является критически важным. Когда вы компилируете OpenSSH, конфигурационный скрипт пытается обнаружить версию OpenSSL и соответствующие функции. Ошибки, которые вы наблюдаете, указывают на то, что данное обнаружение не прошло успешно.

Пример

В вашем описании вы указываете, что сделали первую попытку с конфигурацией:

./configure --prefix=/usr --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/include/openssl

В ответе были получены ошибки:

checking for OpenSSL_version... no
checking for OpenSSL_version_num... no
checking OpenSSL library version... not found
configure: error: OpenSSL library not found.

Это произошло из-за неправильного указания пути к директории OpenSSL. Путь /usr/local/include/openssl указывает только на заголовочные файлы OpenSSL, но не на саму библиотеку и ее бинарные файлы.

После внесения изменений в команду конфигурации:

./configure --prefix=/usr --with-pam --with-selinux --with-privsep-path=/var/lib/sshd --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl-3.0.16

Это позволило успешно скомпилировать OpenSSH. Новая директория содержит как заголовочные файлы, так и библиотечные файлы.

Применение

Для успешной компиляции OpenSSH с OpenSSL на вашей системе, необходимо выполнить следующие шаги:

  1. Удостоверьтесь, что пути к библиотекам и заголовочным файлам указаны правильно: Убедитесь, что путь, указанный в флаге --with-ssl-dir, направлен на корневую директорию установленного OpenSSL, содержащую как библиотеки, так и заголовочные файлы.

  2. Проверьте зависимости: Убедитесь, что все зависимости для OpenSSL и OpenSSH установлены. Это могут быть дополнительные библиотеки или инструменты разработки.

  3. Конфигурация SSHD: После успешной компиляции и установки возможно, что стандартные параметры в вашем конфигурационном файле (/etc/ssh/sshd_config) не поддерживаются новой сборкой. Как в вашем примере, строки, связанные с GSSAPI, пришлось закомментировать.

  4. Убедитесь в совместимости версий: Посмотрите обсуждения на тему совместимости использующих библиотек. Пример с GitHub ссылкой, который вы упомянули, может содержать информацию о потенциальных изменениях функций OpenSSL, что важно учитывать во время конфигурации OpenSSH.

  5. Обновите окружение (PATH и LD_LIBRARY_PATH): Включите пути до бинарных файлов и библиотек OpenSSL в переменные окружения, например, обновите PATH и LD_LIBRARY_PATH. Это гарантирует, что исполнение программ таких как ssh и sshd будет использовать нужные версии библиотек.

  6. Пересмотрите документацию: Ознакомьтесь с официальной документацией или форумами для любых дополнительных конфигураций, которые могут потребоваться для вашей специфической версии операционной системы или для вашей ситуации с библиотеками.

Следуя этим рекомендациям, вы не только решите текущие ошибки, но и получите продуманное решение, готовое к последующему обслуживанию и обновлениям. Основное внимание следует уделить соответствию между OpenSSL и OpenSSH, а также их корректной интеграции в систему.

Оцените материал
Добавить комментарий

Капча загружается...