构建OpenSSH时缺少OpenSSL头文件

时间:2015-05-19 16:11:02

标签: openssl openssh

我想从源代码构建一个特定OpenSSL版本的OpenSSH版本,但是我收到以下错误:

mkdir /tmp/ssh
cp openssh-6.7p1.tar.gz /tmp/ssh
cp openssl-1.0.1l.tar.gz /tmp/ssh
cd /tmp/ssh
tar zxvf openssl-1.0.1l.tar.gz
cd openssl-1.0.1l
./config --prefix=/tmp/ssh
make
make install
cd ..
tar zxvf openssh-6.7p1.tar.gz
cd openssh-6.7p1
./configure --with-ssl-dir=/tmp/ssh --prefix=/tmp/ssh

...
checking openssl/opensslv.h usability... no
checking openssl/opensslv.h presence... no
checking for openssl/opensslv.h... no
configure: error: *** OpenSSL headers missing - please install first or check config.log ***

openSSH配置脚本中是否有错误,或者我是否需要更改任何命令?

4 个答案:

答案 0 :(得分:5)

这是一种不向./configure发送标志的方法您需要先安装OpenSSL。获取最新的tarball here

./config
make
make test
make install

然后install libssl-dev

apt-get install libssl-dev

然后您可以重试installing OpenSSH:

cd openssh-[version]
./configure
make
make install

答案 1 :(得分:1)

ftp://ftp.ca.openbsd.org/pub/OpenBSD/OpenSSH/portable/INSTALL说:

  

应将LibreSSL / OpenSSL编译为与位置无关的库   (即使用-fPIC)否则OpenSSH将无法与之链接。   如果您必须使用非位置无关的libcrypto,那么您可能需要   配置OpenSSH --without-pie。

以下命令不会导致" OpenSSL标头丢失"错误了:

f.select

答案 2 :(得分:0)

  

openSSH的配置脚本中是否存在错误,或者我是否需要更改任何命令?

根据Installing OpenSSL and OpenSSH

  

如果'configure'找不到ssl,请将configure命令更改为:

./configure --prefix=/usr --with-ssl-dir=/usr/local/ssl --with-tcp-wrappers

以上意味着OpenSSL标题位于/usr/local/ssl/include,而库位于/usr/local/ssl/lib。我认为您需要将路径更改为/tmp/ssh

自:

cd openssl-1.0.1l
./config --prefix=/tmp/ssh
...

我认为你应该使用:

cd openssl-1.0.1l
./config --openssldir=/tmp/ssh/openssl
...

另请参阅OpenSSL wiki上的Compilation and Installation。您可能希望使用其他选项,例如enable-ec_nistp_64_gcc_128

使用/tmp/ssh/openssl中的OpenSSL,然后:

cd openssh-6.7p1
./configure --with-ssl-dir=/tmp/ssh/openssl --prefix=/tmp/ssh
...

使用非系统提供的OpenSSL可能会带来麻烦。所以您可能还想查看Build OpenSSL with RPATH?。您可能还想使用RPATH构建OpenSSH。

答案 3 :(得分:0)

这是解决此 OpenSSL 标头丢失错误的方法。

git clone https://github.com/openssl/openssl.git
cd openssl
./Configure
make
make install

现在将安装 OpenSSL,您将不再收到 OpenSSL 标头丢失消息。