在CentOS7系统中通过源码编译升级OpenSSH10.0p1           

在CentOS7系统中通过源码编译升级OpenSSH10.0p1

作者 hxwsq_华 于 2024-12-05 14:25:00.0 发表于 浙江    最近修改于 2025-04-25 14:26:29.0     本文浏览量:96人次

一、说明

1.1 操作系统版本

本文使用的操作系统版本:CentOS 7.9

cat /etc/centos-release

1.2 准备工作

1.OpenSSH10.0p1源码包(下载

2.OpenSSH10.0p1依赖于高版本的OpenSSL(OpenSSL版本 ≥ 1.1.1),OpenSSL升级方法可参考《在CentOS7系统中通过源码编译升级OpenSSL3.0.16》

二、升级步骤

【注意】升级OpenSSH版本前,如果条件允许,最好先开启系统的telnet远程服务,以防OpenSSH升级过程中SSH连接意外断开

2.1 安装所需的软件包

yum -y install gcc zlib-devel pcre-devel pam-devel rsync

2.2 备份原OpenSSH文件

---备份SSH服务的主配置目录
[[ -d /etc/ssh ]] && mv /etc/ssh /etc/ssh.bak
---备份SSH服务的二进制文件
[[ -f /usr/bin/scp ]] && mv /usr/bin/scp /usr/bin/scp.bak
[[ -f /usr/bin/sftp ]] && mv /usr/bin/sftp /usr/bin/sftp.bak
find /usr/bin -name "ssh*" | while read file; do mv $file $file.bak; done
find /usr/sbin -name "ssh*" | while read file; do mv $file $file.bak; done

2.3 获取OpenSSH源码包

2.4 编译安装OpenSSH

tar -zxf openssh-10.0p1.tar.gz
cd openssh-10.0p1 && ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib --with-pam && make && make install

2.5 安装后配置

---修改/etc/ssh/sshd_config
echo "Protocol 2" >> /etc/ssh/sshd_config
echo "SyslogFacility AUTHPRIV" >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
echo "ChallengeResponseAuthentication no" >> /etc/ssh/sshd_config
echo "X11Forwarding yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "UsePAM yes" >> /etc/ssh/sshd_config
---修改/etc/pam.d/sshd
echo "session required /usr/lib64/security/pam_limits.so" >> /etc/pam.d/sshd
---同步可执行程序
rsync -avb /usr/local/openssh/bin/* /usr/bin/
rsync -avb /usr/local/openssh/sbin/* /usr/sbin/
cp -a ~/openssh-10.0p1/contrib/ssh-copy-id /usr/bin/
chown root:root /usr/bin/ssh-copy-id
chmod 755 /usr/bin/ssh-copy-id

2.6 恢复原SSH配置(选做)

---如果原SSH服务端口不是默认的22端口,则升级OpenSSH后需要在/etc/ssh/sshd_config文件中修改SSH端口配置,另外需确保已关闭系统的SELinux功能并在系统防火墙中放通该端口
---如果原SSH配置文件中还有其他配置,可参照原配置在/etc/ssh/sshd_config文件中做相应的修改

2.7 设置开机自启动

---停止ssh服务
systemctl stop sshd.service
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
---配置开机自启动脚本
cp -a ~/openssh-10.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
chmod 755 /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
---关闭SELinux
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
---启动ssh服务
service sshd start

2.8 验证升级后的OpenSSH版本

---此处查询的版本信息应是有误
ssh -V && /usr/sbin/sshd -V

三、回退OpenSSH版本

3.1 删除新版本的SSH配置文件

---删除新版本SSH服务的主配置目录
[[ -d /etc/ssh ]] && mv /etc/ssh /etc/ssh.10.0
---删除新版本SSH服务的二进制文件
[[ -f /usr/bin/scp ]] && mv /usr/bin/scp /usr/bin/scp.10.0
[[ -f /usr/bin/sftp ]] && mv /usr/bin/sftp /usr/bin/sftp.10.0
find /usr/bin -name "ssh*" ! -name "*.bak" | while read file; do mv $file $file.10.0; done
find /usr/sbin -name "ssh*" ! -name "*.bak" | while read file; do mv $file $file.10.0; done

3.2 还原旧版本的SSH配置文件

---还原旧版本SSH服务的主配置目录
mv /etc/ssh.bak /etc/ssh
---还原旧版本SSH服务的二进制文件
mv /usr/bin/scp.bak /usr/bin/scp
mv /usr/bin/sftp.bak /usr/bin/sftp
find /usr/bin -name "ssh*.bak" | while read file; do mv $file ${file%.bak}; done
find /usr/sbin -name "ssh*.bak" | while read file; do mv $file ${file%.bak}; done
---还原旧版本SSH服务的单元文件
mv /usr/lib/systemd/system/sshd.service.bak /usr/lib/systemd/system/sshd.service

3.3 启动SSH服务

systemctl daemon-reload
systemctl enable --now sshd.service

3.4 查看回退后的OpenSSH版本

ssh -V

四、文档更新记录

日期 更新记录
2024-12-05 新建文档,OpenSSH版本为OpenSSH9.9p1
2025-04-07 更新OpenSSH版本至OpenSSH9.9p2
2025-04-14 更新OpenSSH版本至OpenSSH10.0p1

本站声明

本站所有文章均由作者(hxwsq_华)个人整理和发布,仅供学习和参考,严禁任何形式的复制和转载!
如有疑问,请点击此处给作者发邮件,谢谢!