**
Linux 解决Openssh的ssl版本与openssl版本不一致问题
**
首先你的服务器里的openssl版本是最新的,而你用的ssh的rpm升级包却是1.0.2k版本的,而又需要让ssh里的ssl版本与openssl版本一致,那就需要你在这台openssl版本最新的服务器上进行制作rpm包。
不一致情况如下所示
[root@ x86_64]# ssh -V
OpenSSH_9.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017
[root@ x86_64]# openssl version
OpenSSL 1.1.1g 21 Apr 2020
第一步:安装最新的openssl
这一步在我另一个帖子里,可以跟着一起走。
第二步:下载最新的openssh包和x11-ssh-askpass-1.2.4.1.tar.gz,最好在官网上下载
x11-ssh-askpass-1.2.4.1.tar.gz
第三步:需要准备编译环境(若是有都可以不用下,若是没有则都要下)
yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts
这里有gcc、ssl(这个ssl在第一步安装后可以不需要再装,gcc这些有也可以忽略毕竟前面都装了openssh成功了这些依赖都是必须的得有的)
第四步:准备rpmbuild环境
mkdir -p /root/rpmbuild/SOURCES
mkdir -p /root/rpmbuild/SPECS
cp /root/openssh-9.0p1.tar.gz /root/rpmbuild/SOURCES/
cp /root/x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES/
tar -zxf openssh-9.0p1.tar.gz -C /home/user
cp /home/user/openssh-9.0p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
chown sshd:sshd /root/rpmbuild/SPECS/openssh.spec c
/home/user/openssh-9.0p1/ 这指的是你解压的路径,可以更改
修改/root/rpmbuild/SPECS/openssh.spec配置文件
注意:这点可以处理openssl version和ssh -V显示得版本不一致问题。
增加openssl路径,会识别到新版本得openssl,在安装过程也会优先安装openssl1.1.1后,才能正常启动openssh。
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 < 1.1/#BuildRequires: openssl-devel < 1.1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e '/with-privsep-path/a\ --with-openssl-includes=/usr/local/openssl/include \\\n --with-ssl-dir=/usr/local/openssl \\' /root/rpmbuild/SPECS/openssh.spec
其中这个openssl-devel < 1.1 值得时openssl的devel依赖不低于1.1;
/usr/local/openssl/include 这个指的是你openssl安装路径,一定要是安装路径否则会找不到。
第五步:在/root/rpmbuild/SPECS/目录中执行命令
rpmbuild -ba openssh.spec
这里执行完我报了个错
configure: error: PAM headers not found(或者是中文语言找不到PAM头)
这里需要安装pam-devel
yum -y install pam-devel
再重新执行上一个命令!
第六步:最后rpm包则生成在/root/rpmbuild/RPMS/x86_64目录中
root@ SPECS]# ll /root/rpmbuild/RPMS/x86_64/
总用量 4772
-rw-r--r--. 1 root root 689384 7月 6 14:38 openssh-9.0p1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 679276 7月 6 14:38 openssh-clients-9.0p1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 3048624 7月 6 14:38 openssh-debuginfo-9.0p1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 462816 7月 6 14:38 openssh-server-9.0p1-1.el7.x86_64.rpm
看到这些恭喜你已经成功一半了!
第七步:重新安装openssh9.0
(1)一定要先开telnet服务,不要觉得一帆风顺,凡是都留一手,因为再升级openssh途中,原本的ssh连接会容易掉的,而且一旦掉了,你又没法直接操作虚拟机,那不好意思你彻底凉透了。
开启telnet服务首先要安装包
yum install telnet-server
yum install xinetd telnet-server telnet -y
(2)安装完需要修改配置文件
vim /etc/xinetd.d/telnet
若没有这个telnet文件,就新建一个
# default: on:
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
将disable =yes 改为no
(3)然后保存,并执行命令。
service xinetd restart
(4)同时有防火墙记得把防火墙的23端口打开了,否则你这个开了跟没开一样,进不去。
(5)完成以上步骤后,先试试telnet 这个服务器23端口 直接先用账号把该服务器登录上再说。
(6)记得备份好ssh文件
mkdir ssh_backfile
cp -rf /etc/ssh ssh_backfile/
cp -rf /etc/pam.d/sshd ssh_backfile/
mkdir ssh_service
cp -rf /usr/lib/systemd/system/sshd* ssh_service/
(7)进行ssh升级
若是有安装同样版本的ssh,需要先卸载再装,否则就不需要
#卸载当前openssh所有的安装包
rpm -e --nodeps `rpm -qa | grep openssh
#先进到/root/rpmbuild/RPMS/x86_64/ 这个目录下再执行以下命令
rpm -Uvh openssh* --nodeps
#执行命令后如下所示
[root@ x86_64]# rpm -Uvh openssh* --nodeps
准备中... ################################# [100%]
正在升级/安装...
1:openssh-9.0p1-1.el7 ################################# [ 25%]
2:openssh-clients-9.0p1-1.el7 ################################# [ 50%]
3:openssh-server-9.0p1-1.el7 ################################# [ 75%]
4:openssh-debuginfo-9.0p1-1.el7 ################################# [100%]
(8)恢复备份文件
cp -rf ssh_backfile/ssh/* /etc/ssh/
chmod -R 600 /etc/ssh/*
cp -rf ssh_backfile/sshd /etc/pam.d/sshd
service sshd restart
(或)
systemctl restart sshd
(9)查看结果
[root@ x86_64]# ssh -V
OpenSSH_9.0p1, OpenSSL 1.1.1g 21 Apr 2020
[root@ x86_64]# openssl version
OpenSSL 1.1.1g 21 Apr 2020
看到这一步时候就已经成功了,成功解决了openssh -V和opebssl version版本不一致的情况。
(10)记住完成后,先试试ssh连接是否能够上去,能上去就说明成功了,若是没上去,说明安装出问题了,从头开始找或者换一个方式来升级。不过一般来说有问题都是依赖没对!所以制作rpm包的服务器最好是在可以连上外网的服务器,可以使用yum源的服务器,否则将会很困难。
这是我已经做好的openssh9.0 rpm包,而且已经是成功安装了的,大家偷懒的话可以试试
我是根据下面这位大佬来进行一步一步根据自己服务器实际情况来操作的,感谢这位大佬的文献!
https://blog.csdn.net/weixin_43723044/article/details/124301627