此问题出现在最新版本openssh9.4上,按照正常流程编译,会提示openssl版本过低,openssh改变了openssl兼容方式,低版本openssl无法正常编译完成,解决办法一句话:先编译openssl高版本,然后修改openssh spec配置,需要读取升级后的openssl,才可以正常编译。
编译openssl:
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar zxvf openssl-1.1.1w.tar.gz cd openssl-1.1.1w yum install gcc yum install perl-App-cpanminus.noarch ./config --prefix=/usr/local/openssl make && make install echo "/usr/local/lib64/" >> /etc/ld.so.conf ldconfig openssl version ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
升级后需要修改/root/rpmbuild/SPECS/openssh.spec配置文件
注意:openssl路径需要和上面openssl编译的路径/usr/local/openssl一致。
同时也可以处理openssl version和ssh -V显示得版本不一致问题。
增加openssl路径,会识别到新版本openssl:
sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec sed -i -e "s/^BuildRequires: openssl-devel注意:/usr/local/openssl/include 这个指的是你openssl安装路径,一定要是安装路径否则会找不到。
修改完成后重新编译openssh即可,centos6和centos7测试通过。
注意:centos6升级后会提示libssl.so.10: cannot open shared object file: No such file or directory解决办法,参考此文章解决:
CeotOS6提示 libssl.so.10: cannot open shared object file: No such file or directory解决办法