Centos7.9升级OpenSSH版本

升级前先多开几个ssh窗口或者打开telnet,因为升级ssh可能会导致ssh无法登录

一、查看当前版本

ssh -V

升级后的版本

二、开始升级OpenSSH

1.备份配置文件

bash 复制代码
cd /etc/ssh
cp sshd_config{,.bak}
cd /etc/pam.d
cp sshd{,.bak}

2.下载OpenSSH

bash 复制代码
 https://mirrors.aliyun.com/openssh/portable/openssh-9.3p2.tar.gz?spm=a2c6h.25603864.0.0.36ab3bf96vJxzA

3.安装依赖软件包

bash 复制代码
yum -y install gcc gcc-c++ zlib-devel openssl-devel pam-devel

4.卸载旧版本,编译安装新版本OpenSSH

bash 复制代码
tar -xf openssh-9.3p2.tar.gz -C /usr/src
cd /usr/src/openssh-9.3p2
# 在此之前,确保安装了pam,没安就执行 =》 yum install pam-devel
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-pam

执行结束会看到"PAM is enabled"

bash 复制代码
rpm -qa | grep openssh
bash 复制代码
rpm -e --nodeps `rpm -qa | grep openssh`
make && make install
bash 复制代码
echo $?

此次升级OpenSSH,并没有同时升级OpenSSL。

5.修改文件权限

bash 复制代码
# 修改文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
# 复制配置文件并授权
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
# 还原之前备份的配置文件
cd /etc/ssh
cp -rap sshd_config.bak sshd_config
cd /etc/pam.d
cp -rap sshd.bak sshd
# 允许root用户远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
# 设置开机自启
chkconfig --add sshd
chkconfig sshd on
chkconfig --list

6.重启并验证ssh是否升级成功

bash 复制代码
# 重启SSH
systemctl restart sshd
# 版本验证
ssh -V

三、可能出现的问题

1.ssh无论是root还是普通用户都无法登录,登录1秒后被弹出

一般是selinux策略有问题,可以先查看selinux状态

bash 复制代码
sestatus

如果是严格模式(Enforcing),可以先切换成宽松模式

bash 复制代码
setenforce 0

然后再去试试是否可以登录ssh了,如果可以,那就是selinux策略问题,按最下面的解决方法处理。

按解决方法处理完后还原成严格模式,再试试在严格模式下是否能ssh登录,如果可以,那就解决了

bash 复制代码
setenforce Enforcing

解决方法

bash 复制代码
# 安装工具(如果还未安装)
yum install policycoreutils selinux-policy-devel -y
# 生成策略模块(会在当前目录生成mypol.te和mypol.pp两个文件)
ausearch -m avc -ts recent | audit2allow -M mypol
# 加载策略模块
semodule -i mypol.pp
# 将策略模块设置为持久化(开机自启)
semodule -e mypol 
# 重启后可使用此来查看此策略模块是否加载成功,如果成功,上面的文件叫mypol,就有一个mypol模块
semodule -l

2.sftp无法使用

bash 复制代码
# vim /etc/ssh/sshd_config
Subsystem  sftp  /usr/libexec/openssh/sftp-server
修改为:
Subsystem  sftp  internal-sftp
# systemctl restart sshd
相关推荐
我爱学习好爱好爱3 分钟前
Ansible 环境搭建
linux·运维·ansible
野犬寒鸦20 分钟前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
人工智能训练39 分钟前
从 1.1.3 到 1.13.2!Ubuntu 24.04 上 Dify 升级保姆级教程(零数据丢失 + 一键迁移)
linux·运维·人工智能·windows·ubuntu·dify
我要成为嵌入式大佬1 小时前
正点原子MP157--问题详解--四(关于根文件系统驱动模块指令的注意事项)
linux·运维·服务器
feng68_1 小时前
Redis架构实践
linux·运维·redis·架构·bootstrap
欧云服务器1 小时前
宝塔计划任务怎么自动删除多少个以外的文件?
linux·运维·服务器
XXOOXRT1 小时前
零基础掌握Linux常用命令
linux·运维·服务器
迷海2 小时前
Linux g++编译与GDB调试完整流程(文末附图)
linux·gdb调试工具·g++编译器
softbangong2 小时前
815-批量Excel文件合并工具,批量excel文件、工作表合并软件
linux·windows·excel·文件合并·excel合并·数据整理
123过去2 小时前
responder使用教程
linux·网络·测试工具·安全·哈希算法