运维 约 2 分钟

CentOS/Redhat 升级OpenSSH教程

如果是远程SSH升级,建议使用Telnet远程连接进行升级,如果你对升级过程比较有把握可以不使用Telnet直接SSH。

2026 年注:CentOS 7 已在 2024 年 6 月 30 日停止维护。OpenSSH 9.4 起要求 OpenSSL 1.1.1 以上,CentOS 7 自带的 OpenSSL 1.0.2 编译不了新版。第 7 步开启了 root 登录,KexAlgorithms 里还有已经不安全的 diffie-hellman-group1-sha1,不要照抄。

OpenSSH.png

1、安装Telnet服务端(可选)

如果是远程SSH升级,建议使用Telnet远程连接进行升级,如果你对升级过程比较有把握可以不使用Telnet直接SSH。

2、安装依赖软件包

yum install wget gcc zlib-devel openssl-devel pam-devel libselinux-devel zlib-devel openssl-devel -y

3、卸载系统自带的openssh

查看

rpm -qa | grep ssh

卸载

rpm -e `rpm -qa|grep openssh` --nodeps

4、下载新版OpenSSh并安装

先自行查询所需的OpenSSH版本号,将下面的${version}替换成自己所需的版本号,另外wget后面的地址也可以替换成其它的CDN地址。

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${version}.tar.gz
tar -zxvf openssh-${version}.tar.gz
cd openssh-${version}
./configure

如果报错缺少组件,可使用yum安装缺少的组件后再次执行configure

make
make install

5、拷贝源文件

cp contrib/redhat/sshd.init /etc/init.d/sshd
cp contrib/redhat/sshd.pam /etc/pam.d/sshd
chmod +x /etc/init.d/sshd

6、修改/etc/init.d/sshd中的SSHD路径

vim /etc/init.d/sshd

修改以下内容

SSHD=/usr/local/sbin/sshd

7、修改sshd配置文件

vim /usr/local/etc/sshd_config

加入以下内容

PermitRootLogin yes
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org

8、将sshd指令追加到Path

export PATH=$PATH:/usr/local/sbin

9、建立文件夹映射

这一步主要是为了日后配置方便,比如说宝塔之类的面板,升级OpenSSH后会导致宝塔面板没法正常修改SSH相关设置。

ln -s /usr/local/etc /etc/ssh

10、添加自启服务SSH到开机启动项

chkconfig --add sshd
chkconfig sshd on

11、重启sshd服务

systemctl daemon-reload
systemctl restart sshd

12、查看OpenSSH版本

如果你是通过SSH远程连接的方式升级的话得先重新连接一下才会生效。

ssh -V