Centos Openssh升级为Openssh8.8最新版

最近因为做等保扫描出老版本的Openssh有漏洞,因此准备决心把Openssh升级到最新版本,前前后后折腾了两三个星期,中间填上了各种坑,最终终于搞定,最终版本为Openssh8.8p1 ,Openssl1.1.1l ,zlib-1.2.11

1.事前准备好三个安装包,大家可以去各大镜像源网站进行下载,如下所示

 

2、使用yum 对 gcc lrzsz 进行安装

[root@localhost ~]# mkdir upload
[root@localhost ~]# cd upload
[root@localhost upload]# rz                        //使用rz命令将包上传到upload文件夹中

所有的工作都已经准备就绪,以下马上就开始安装,大部分命令只需要复制粘贴即可,只需记住顺序千万不要搞错

1、解压包

cd
cd upload
tar -xvf openssl-1.1.1l.tar.gz
tar -xvf openssh-8.8p1.tar.gz
tar -xvf zlib-1.2.11.tar.gz

2、编译安装zlib

cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install

3、编译安装openssl

cd ..
cd openssl-1.1.1l
./config --prefix=/usr/local/ssl -d shared
make && make install
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v 

4、安装openssh

cd ..
cd openssh-8.8p1
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && make install

5、sshd_config 文件修改

echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config 

6、替换/etc/ssh里的文件

mv /usr/sbin/sshd /usr/sbin/sshd.bak
 cp  /usr/local/openssh/sbin/sshd /usr/sbin/sshd

mv /usr/bin/ssh /usr/bin/ssh.bak
 cp  /usr/local/openssh/bin/ssh /usr/bin/ssh

mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
 cp  /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub


mv /etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_dsa_key.pub.bak
cp /usr/local/openssh/etc/ssh_host_dsa_key.pub /etc/ssh/ssh_host_dsa_key.pub

7、更换openssl文件 这一步操作完成后 输入openssl version会发现openssl版本已经发生变化

mv /usr/bin/openssl /usr/bin/openssl_bak
cp /usr/local/ssl/bin/openssl /usr/bin/openssl

mv /usr/include/openssl /usr/include/openssl_bak
 ln -s /usr/local/ssl/include/openssl /usr/include/openssl

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig

8、替换启动文件

cd
cd  upload/openssh-8.8p1/
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
 cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
chkconfig --add  sshd
systemctl enable sshd

9.sshd.service 会跟etc/init.d/sshd 文件形成冲突,而sshd.socket重启之后会发生报错所以进行移除

mv  /usr/lib/systemd/system/sshd.service   /usr/lib/systemd/system/sshd.service_bak
mv  /usr/lib/systemd/system/sshd.socket   /usr/lib/systemd/system/sshd.socket_bak

10.添加ssh开机启动

chkconfig sshd on
/etc/init.d/sshd restart

11.重新生成rsa dsa key (这一步是因为怕本地证书不符,所以加上的,可以不进行操作,请自测)

ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

12. ssh  -V   进行测试

[root@localhost ~]# ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021
[root@localhost ~]# openssl version
OpenSSL 1.1.1l  24 Aug 2021
 

遇到的问题:(真是坑死我了)

1、KexAlgorithms 加密算法不支持报错, 先看一下报错信息

cat /var/log/message 

 Nov  4 16:03:20 localhost sshd[15961]: Unable to negotiate with 192.100.0.112 port 50581: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1 [preauth]

解释一下报错原因在openssh升级之后,默认不支持这四种加密算法,需要在本地sshd_config添加这四种算法,如果是按照我这种方法安装的只需下面这一条命令即可:

echo 'KexAlgorithms diffie-hellman-group1-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1' >>/usr/local/openssh/etc/sshd_config 

因为现在sshd 调用的配置文件在/usr/local/openssh/etc/sshd_config  而不是在/etc/ssh/sshd_config 最后再用sshd -T | grep kex验证一下,完美解决。

[root@localhost ~]# sshd -T | grep kex
kexalgorithms diffie-hellman-group1-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1

2、没有匹配的host key found 先看一下报错信息

Nov  4 16:26:11 localhost sshd[16438]: Unable to negotiate with 192.100.0.112 port 50725: no matching host key type found. Their offer: ssh-rsa,ssh-dss [preauth]

这个很简,单确认好sshd调用的配置文件后 

echo 'HostKeyAlgorithms +ssh-rsa,ssh-dss' >>/usr/local/openssh/etc/sshd_config

只需一条命令可以完全解决

3、出现create slice 死循环问题 先看日志

Jul 24 08:50:01 example.com systemd: Created slice user-0.slice.
Jul 24 08:50:01 example.com systemd: Starting Session 150 of user root.
Jul 24 08:50:01 example.com systemd: Started Session 150 of user root.
Jul 24 09:00:01 example.com systemd: Created slice user-0.slice.
Jul 24 09:00:02 example.com systemd: Starting Session 151 of user root.
Jul 24 09:00:02 example.com systemd: Started Session 151 of user root.

解决方法过滤掉相关的日志报警

echo 'if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session"
or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice
of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains
"Stopping User Slice of") then stop' >/etc/rsyslog.d/ignore-systemd-session-slice.conf

以上就是Openssh升级的所有过程,以及遇到的所有的坑,欢迎留言指导

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 要升级CentOS 7的OpenSSH版本到8.8,可以按照以下步骤进行: 1. 安装EPEL存储库: ``` sudo yum install epel-release ``` 2. 安装OpenSSH 8.8: ``` sudo yum install openssh-server ``` 3. 启动OpenSSH服务: ``` sudo systemctl start sshd ``` 4. 验证OpenSSH版本: ``` ssh -V ``` 如果显示的版本为OpenSSH 8.8,则升级成功。 请注意,在升级OpenSSH之前,建议备份重要的配置文件和数据。升级过程可能会影响系统的稳定性和安全性。 ### 回答2: 在升级 CentOS 7 的 OpenSSH 之前,需要先确认系统版本。可以通过以下命令检查: ``` cat /etc/centos-release ``` 接下来,需要确保系统已经安装了 EPEL 软件源。如果未安装,可以通过以下命令安装: ``` yum install epel-release -y ``` 安装 EPEL 软件源后,就可以使用以下命令升级 OpenSSH: ``` yum --enablerepo=epel-testing install openssh -y ``` 执行这个命令之后,系统会自动下载和安装最新版本的 OpenSSH。安装完成后,可以使用以下命令确认版本: ``` ssh -V ``` 升级完成后,需要注意一些事项,例如备份现有 OpenSSH 配置文件等。新版本的 OpenSSH 可能会有一些不兼容的更新,需要进行配置调整。同时,也需要确保升级后的 OpenSSH 在安全性方面没有问题。建议仔细阅读系统日志和相关文档,以确保升级后系统的运行稳定和安全。 ### 回答3: CentOS 7是一款广受欢迎的服务器操作系统,由于其稳定性和可靠性被广泛使用。OpenSSH是一套免费开源的SSH协议的实现,可以通过加密通道来保证安全性,防止中间人攻击。然而,CentOS 7默认安装的OpenSSH版本较低,不能满足一些新功能和安全性需求。在这种情况下,用户可以选择将OpenSSH版本升级8.8来增强安全性和性能。 以下是在CentOS 7上升级OpenSSH 8.8的步骤: 1. 安装OpenSSH编译工具 在升级过程中,需要使用OpenSSH编译工具,因此需要使用以下命令安装: sudo yum install gcc make pam-devel zlib-devel 2. 下载OpenSSH8.8OpenSSH官方网站上,下载最新的OpenSSH 8.8版本: sudo wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz 3. 解压下载的文件 使用以下命令解压下载的文件: sudo tar -zxvf openssh-8.8p1.tar.gz 4. 编译和安装OpenSSH 接下来,需要编译OpenSSH,使用以下命令: cd openssh-8.8p1 sudo ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/lib64/openssl sudo make sudo make install 5. 禁用老版本的OpenSSH 现在,需要停止老版本的OpenSSH服务,并禁止其自动启动,使用以下命令: sudo systemctl stop sshd sudo systemctl disable sshd 6. 启用新版本的OpenSSH 接下来,需要启动新版本的OpenSSH服务,并确认其运行状态,使用以下命令: sudo systemctl start sshd sudo systemctl status sshd 7. 测试新版本的OpenSSH 现在,使用SSH客户端连接到服务器,并检查新版本的OpenSSH功能是否正常。如果所有步骤都执行正确,则应该成功升级OpenSSH 8.8。 总结 CentOS 7是一款功能强大的服务器操作系统,其默认安装的OpenSSH版本相对较低。通过按照上述步骤升级OpenSSH 8.8,可以提高安全性和性能,避免一些可能的安全隐患。为了确保成功升级,请务必逐步执行上述步骤,检查每个命令的输出和状态,并测试新版本的OpenSSH是否正常。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值