Linux OpenSSH最新版9.7p1升级操作详细教程

1.背景说明

openssh版本9.7p1之前的版本存在很多安全风险,等保验收不通过,需要升至最新的版本

2.升级目标

将openssh版本升至9.7p1

3.准备工作

3.1.环境评估

本次以测试服务器为例讲解,系统为Centos8.0 版本,升级前OpenSSH版本8.0p1,OpenSSL版本1.1.1k,案例仅供更新参考,其他系统及版本请自行测试。

3.2.备份现有配置

cp -rf /etc/ssh /etc/ssh.bak
cp -rf /usr/bin/openssl /usr/bin/openssl.bak
cp -rf /etc/pam.d /etc/pam.d.bak
cp -rf /usr/lib/systemd/system /system.bak

3.3.TELNET安装配置

*特别注意:telnet必须安装且验证其他服务器可以通过telnet登录上去,不然升级完之后会出现root用户通过ssh登录不上去的情况,这是一个坑,请务必注意。

#1.telnet安装
yum install -y telnet telnet-server xinetd
#2.启动telnet服务
systemctl start xinetd && systemctl start telnet.socket
#3.开放防火墙23端口
firewall-cmd --zone=public --add-port=23/tcp --permanent
#4.重新加载防火墙规则
firewall-cmd --complete-reload
#5.查询23端口放行情况
firewall-cmd --query-port=23/tcp
#6.开放telnet明文登录
sed -i 's/^auth[[:space:]]\+required[[:space:]]\+pam_securetty.so/#&/' /etc/pam.d/remote
#7.测试telnet登录
telnet ip
#8.加入开机启动
systemctl enable telnet.socket

备注:

执行步骤3时我这报了个“FirewallD is not running”的错误,表示防火墙未开启,正常开启防火墙,然后再执行步骤3即可(如果没步骤三没报错,直接执行步骤4即可)

# 1.查看防火墙状态。Active为dead表示防火墙未开启
systemctl status firewalld
# 2.开启防火墙。执行命令没有任何提示,即开启成功
systemctl start firewalld
#3.查看防火墙状态。Active为显示running即已开启了
systemctl status firewalld
#4.如果需要关闭防火墙则运行
systemctl stop firewalld

4.升级步骤

4.1.依赖及编译环境安装

yum install -y vim gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers libedit-devel perl-IPC-Cmd wget tar lrzsz nano

4.2.下载源码包

cd /usr/local/src
wget https://www.zlib.net/zlib-1.3.1.tar.gz
wget https://www.openssl.org/source/openssl-3.2.1.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz

4.3.解压源码包

cd /usr/local/src/
tar -zxvf zlib-1.3.1.tar.gz
tar -zxvf openssl-3.2.1.tar.gz
tar -zxvf openssh-9.7p1.tar.gz

4.4.安装Zlib

#1.进入zlib-1.3.1目录
cd /usr/local/src/zlib-1.3.1
#2.配置
./configure --prefix=/usr/local/src/zlib
#3.编译及安装(编译时间预计几分钟,视机器而定)
make -j 4 && make test && make install

4.5.安装OpenSSL

#1.进入openssl-3.2.1目录
cd /usr/local/src/openssl-3.2.1
#2.配置
./config --prefix=/usr/local/src/openssl
#3.编译及安装(编译时间预计几分钟,视机器而定)
make -j 4 && make install
#4.配置
mv /usr/bin/openssl /usr/bin/oldopenssl
ln -s /usr/local/src/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/src/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
#5.更新动态库
echo "/usr/local/src/openssl/lib64" >> /etc/ld.so.conf
ldconfig
#6.查看更新后的版本
openssl version -v

4.6.安装OpenSSH

4.6.1.老版本OpenSSH卸载
#1.卸载openssh8.0p1
yum remove -y openssh
#2.清理残余文件
rm -rf /etc/ssh/*

4.6.2.OpenSSH安装
#1.进入openssh-9.7p1目录
cd /usr/local/src/openssh-9.7p1
#2.配置
./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlib 
#3.编译及安装
make -j 4 && make install
#4.查看目录版本
/usr/local/src/ssh/bin/ssh -V
#5.复制新ssh文件
cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.pam /etc/pam.d/sshd
cp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/src/ssh/bin/ssh /usr/bin/ssh
cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
#6.允许root登录
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

#重启sshd服务
/etc/init.d/sshd restart
#查看服务运行状态
/etc/init.d/sshd status
#添加开机启动
chkconfig --add sshd
#查看升级后ssh版本
ssh -V

4.6.3.验证SSH服务
#任意终端工具测试验证(例如windows)

ssh root@服务器IP

可以看到OpenSSH已升级至9.7p1版本 OpenSSL已升级至3.2.1版本,

4.6.4.备份的配置还原
#备份还原
cp -rf /etc/ssh.bak /etc/ssh
cp -rf /usr/bin/openssl.bak /usr/bin/openssl
cp -rf /etc/pam.d.bak /etc/pam.d
cp -rf /system.bak /usr/lib/systemd/system

#重启sshd服务
cd /usr/local/src/openssh-9.7p1
/etc/init.d/sshd restart
/etc/init.d/sshd status

4.6.5.关闭及卸载telnet服务

备注:很多服务器都是远程操作无法现场,安装telnet目的是防止SSH升级失败造成无法登录情况,telnet安全性不好,最后需关闭或卸载服务。(没有特殊要求也可以不卸载)

#关闭和卸载telnet

#1.查看是否安装telnet
rpm -qa | grep telnet
#2.如果系统安装了Telnet服务会显示出相关的包名。接着,输入以下命令来停止并禁用Telnet服务
systemctl stop telnet.socket
systemctl disable telnet.socket
#3.输入以下命令来卸载Telnet服务
yum remove telnet-server telnet

至此升级全部完成!

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 要升级LinuxOpenSSH版本到8.8p1,可以按照以下步骤进行: 1. 下载OpenSSH 8.8p1的源代码包,可以从OpenSSH官网或者其他镜像站点下载。 2. 解压源代码包,进入解压后的目录。 3. 执行configure命令,生成Makefile文件: ./configure 4. 执行make命令,编译源代码: make 5. 执行make install命令,安装编译后的OpenSSH: make install 6. 检查OpenSSH版本是否升级成功: ssh -V 如果显示的版本号是8.8p1,则说明升级成功。 注意:在升级OpenSSH之前,建议备份原有的OpenSSH配置文件和密钥文件,以免升级过程中出现意外情况导致数据丢失。 ### 回答2: 为了升级Linux上的OpenSSH 8.8p1,我们需要进行以下步骤: 1. 检查现有OpenSSH版本:首先需要检查当前的OpenSSH 版本。可以在终端中运行以下命令来检查OpenSSH版本: ``` ssh -V ``` 如果现有版本是8.8p1或更高版本,则不需要升级。否则需要进行升级。 2. 下载OpenSSH源代码:可以从OpenSSH的官方网站下载源代码。可以使用以下 wget 命令来下载OpenSSH源代码: ``` wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz ``` 3. 解压文件:解压下载的源代码文件,可以使用以下命令来解压: ``` tar -zxvf openssh-8.8p1.tar.gz ``` 4. 安装编译工具:在编译OpenSSH之前,需要安装一些必要的编译工具和依赖项。可以使用以下命令来安装编译工具: ``` sudo apt-get install build-essential ``` 5. 编译和安装OpenSSH:进入解压后的源代码目录,并执行以下命令进行编译和安装: ``` cd openssh-8.8p1 ./configure make sudo make install ``` 6. 修改配置文件:现在,安装好的新版OpenSSH已经可以使用,但需要修改配置文件以启用它。打开配置文件并添加以下行: ``` sudo vi /etc/ssh/sshd_config ``` ``` Protocol 2 ``` 7. 重新启动SSH服务:执行以下命令来重新启动SSH服务: ``` sudo systemctl restart ssh ``` 现在,OpenSSH已成功升级到8.8p1版本,可以通过运行以下命令来检查版本: ``` ssh -V ``` ### 回答3: 首先需要明确的是,升级OpenSSH 8.8p1需要一定的技术运作,因此建议有丰富的Linux经验的用户进行操作。以下是升级步骤: 1.备份 在升级之前,请备份您的服务器数据。这可以通过创建一个快照或备份当前系统来完成。 2.下载OpenSSH 8.8p1OpenSSH官方网站下载OpenSSH 8.8p1的源代码,并将其解压缩。 3.通过SSH连接到服务器 使用SSH连接到您的服务器。 4.安装编译工具 您需要安装一些编译工具来编译OpenSSH。使用以下命令: sudo apt-get update sudo apt-get install build-essential 在CentOS上,可以使用以下命令: sudo yum update sudo yum groupinstall "Development Tools" 5.编译OpenSSH 运行以下命令来编译OpenSSH: ./configure make sudo make install 在CentOS上,可以使用以下命令: ./configure make sudo make install 6.替换现有的OpenSSH 使用以下命令备份现有的OpenSSH: sudo cp /usr/sbin/sshd /usr/sbin/sshd.bak sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 然后,使用以下命令将新的OpenSSH替换现有的OpenSSH: sudo cp /usr/local/sbin/sshd /usr/sbin/sshd sudo cp /usr/local/bin/ssh /usr/bin/ssh sudo cp /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen sudo cp /usr/local/bin/ssh-add /usr/bin/ssh-add sudo cp /usr/local/bin/ssh-agent /usr/bin/ssh-agent sudo cp /usr/local/bin/sftp /usr/bin/sftp 7.重启SSH服务 最后,重启SSH服务,以使新的OpenSSH生效: sudo systemctl restart ssh 通过以上步骤,就可以成功升级OpenSSH 8.8p1了。请务必测试新的OpenSSH,以确保它能够正常工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值