Linux 解决Openssh的ssl版本与openssl版本不一致问题

**

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,最好在官网上下载

openssh9.0p1

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 76 14:38 openssh-9.0p1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root  679276 76 14:38 openssh-clients-9.0p1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 3048624 76 14:38 openssh-debuginfo-9.0p1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root  462816 76 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

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在 CentOS 7.9 中,您可以使用以下命令回退 OpenSSHOpenSSL 版本: 1. 回退 OpenSSH - 查看当前安装的 OpenSSH 版本:`rpm -qa | grep openssh` - 卸载当前版本OpenSSH:`yum remove -y openssh-server openssh-clients` - 下载旧版本OpenSSH:可以通过从 CentOS 官网下载旧版本OpenSSH,也可以使用 yumdownloader 命令下载。例如,如果要下载 OpenSSH 7.6p1 版本,可以使用以下命令:`yumdownloader --enablerepo=base --releasever=7.6 openssh-server openssh-clients` - 安装旧版本OpenSSH:`yum install openssh-server-7.6p1-2.el7.x86_64.rpm openssh-clients-7.6p1-2.el7.x86_64.rpm` - 启动 OpenSSH:`systemctl start sshd` 2. 回退 OpenSSL - 查看当前安装的 OpenSSL 版本:`rpm -qa | grep openssl` - 卸载当前版本OpenSSL:`yum remove -y openssl openssl-libs` - 下载旧版本OpenSSL:可以通过从 CentOS 官网下载旧版本OpenSSL,也可以使用 yumdownloader 命令下载。例如,如果要下载 OpenSSL 1.0.2k 版本,可以使用以下命令:`yumdownloader --enablerepo=base --releasever=7.4 openssl openssl-libs openssl-devel` - 安装旧版本OpenSSL:`yum install openssl-1.0.2k-19.el7.x86_64.rpm openssl-libs-1.0.2k-19.el7.x86_64.rpm openssl-devel-1.0.2k-19.el7.x86_64.rpm` - 配置环境变量:`export LD_LIBRARY_PATH=/usr/local/ssl/lib` - 启动 OpenSSH:`systemctl start sshd` 注意:在回退 OpenSSL 版本时,可能会对其他软件产生影响,因此需要谨慎操作。 希望这些步骤能够帮助您成功回退 OpenSSHOpenSSL 版本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值