Вопрос или проблема
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 на вашей системе, необходимо выполнить следующие шаги:
-
Удостоверьтесь, что пути к библиотекам и заголовочным файлам указаны правильно: Убедитесь, что путь, указанный в флаге
--with-ssl-dir
, направлен на корневую директорию установленного OpenSSL, содержащую как библиотеки, так и заголовочные файлы. -
Проверьте зависимости: Убедитесь, что все зависимости для OpenSSL и OpenSSH установлены. Это могут быть дополнительные библиотеки или инструменты разработки.
-
Конфигурация SSHD: После успешной компиляции и установки возможно, что стандартные параметры в вашем конфигурационном файле (
/etc/ssh/sshd_config
) не поддерживаются новой сборкой. Как в вашем примере, строки, связанные с GSSAPI, пришлось закомментировать. -
Убедитесь в совместимости версий: Посмотрите обсуждения на тему совместимости использующих библиотек. Пример с GitHub ссылкой, который вы упомянули, может содержать информацию о потенциальных изменениях функций OpenSSL, что важно учитывать во время конфигурации OpenSSH.
-
Обновите окружение (PATH и LD_LIBRARY_PATH): Включите пути до бинарных файлов и библиотек OpenSSL в переменные окружения, например, обновите
PATH
иLD_LIBRARY_PATH
. Это гарантирует, что исполнение программ таких какssh
иsshd
будет использовать нужные версии библиотек. -
Пересмотрите документацию: Ознакомьтесь с официальной документацией или форумами для любых дополнительных конфигураций, которые могут потребоваться для вашей специфической версии операционной системы или для вашей ситуации с библиотеками.
Следуя этим рекомендациям, вы не только решите текущие ошибки, но и получите продуманное решение, готовое к последующему обслуживанию и обновлениям. Основное внимание следует уделить соответствию между OpenSSL и OpenSSH, а также их корректной интеграции в систему.