注意事项
- 特别注意:本次升级不能全程远程操作,请严格按照操作步骤进行执行
- 推荐在本机进行升级操作,因为升级过程会连接不上服务器
- 使用配置文件生效,一定要先停止sshd服务,否则会遇到root账号一直不能登录的问题
功能点
- openssh版本升级:7.4p1->9.0p1
上传升级包
- 将本地的升级包【openssh-9.0p1.tar.gz】上传至服务器目录:
/home/
安装升级包
- 一键升级脚本【openssh-9.0p1.sh】,执行过程需要再次确认,请输入y,完成确认
tar zxvf /home/openssh-9.0p1.tar.gz -C /home/
# etc backup
mkdir -p /home/etc /home/service
# 卸载的时候都会把配置文件以sshd_config.rpmsave的方式另存一份但是/etc/pam.d/sshd这个配置文件并没有另存,所以建议都备份一下。
cp /etc/ssh/sshd_config /home/etc/sshd_config
cp /etc/pam.d/sshd /home/etc/sshd
# 删除旧版本的openssh
yum remove openssh –y
# 编译
cd /home/openssh-9.0p1
CCFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib64" ./configure
make && make install
# 赋权
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
# 拷贝+赋权
cp -a /home/openssh-9.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
# etc 恢复备份
cp /home/etc/sshd /etc/pam.d/sshd
mv /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config
mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config
# 编译出来的sshd放在/usr/local/sbin目录下,这里需要拷贝到执行目录
cp /usr/local/sbin/sshd /usr/sbin/
cp /usr/local/bin/ssh-keygen /usr/bin/
# 添加添加自启服务ssh到开机启动项
chkconfig --add sshd
chkconfig sshd on
# 检测一下服务是否运行成功
chkconfig --list |grep sshd
# 查看端口是存在非本地连接的客户端
lsof -i:22- 修改配置文件
# sshd正常运行状态下,执行如下命令会提示不支持的三个属性,根据提示注释掉对应的属性
/usr/sbin/sshd -f /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
# 找到三个配置属性值并注释
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no
#UsePAM yes
# 允许root登录,取消注释
PermitRootLogin yes登录服务器(非远程方式)
- 本节操作必须在服务器上进行,因为升级过程会连接不上服务器
- 断开ssh远程连接
- 登录服务器,将ssh远程登录的所有连接杀死(示例只有一个,实际情况有几个杀死几个):
kill -9 29957

再执行此命令后:lsof -i:22,控制台没有任何ssh远程连接,才能进入下一步,否则,请清理完所有ssh远程连接再继续一下步
- 使用systemctl管理sshd
systemctl restart sshd- 暂停sshd
systemctl stop sshd- 必须确认22端口不再被使用。执行此命令后:
lsof -i:22,控制台没有任何输出,才能进入下一步,否则,请重新结束sshd - 使用配置文件生效

# 执行此命令会直接启动sshd服务,无需要再启动,可能通过命令:lsof -i:22,查看已经启动sshd的进程信息
/usr/sbin/sshd -f /etc/ssh/sshd_config- 升级完成后,使用root可正常登录服务器
确认升级结果
# ssh -V
OpenSSH_9.0p1, OpenSSL 1.1.1q 5 Jul 2022
















