编译安装升级Openssh新版本

1、配置系统环境

1.1、系统环境

1
2
3
4
5
6
7
8
# lsb_release -d
Description: CentOS Linux release 7.9.2009 (Core)

#uname -r
3.10.0-327.el7.x86_64

#ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

1.2、安装所需编译环境

yum install gcc

1.3、升级Openssh过程中注意事项

  • 在升级过程中务必保证远程工具连接ssh服务不会断开。
  • 不能保证ssh连接稳定性,需配置telnet服务进行远程连接,如果是云服务确保主机后台console服务可用。
  • 启动编译后的sshd服务请勿使用restart重启,直接启动即可。

2、安装Openssh依赖环境

2.1、安装zlib环境

1
2
3
4
5
6
7
8
9
10
# rpm -qa | grep zlib       查看系统zlib包环境
zlib-1.2.7-19.el7_9.x86_64
zlib-1.2.7-19.el7_9.i686

# yum install zlib-devel -y

# rpm -qa | grep zlib
zlib-1.2.7-19.el7_9.x86_64
zlib-devel-1.2.7-19.el7_9.x86_64
zlib-1.2.7-19.el7_9.i686

2.2、编译安装Openssl

下载地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# tar -xvf openssl-1.1.1l.tar.gz

# cd openssl-1.1.1l

# ./config --perfix=/usr/local/openssl
# make && make install

# echo '/usr/local/openssl/lib' >> /etc/ld.so.conf
# ldconfig -v

检查编译安装和系统自带的openssl版本是否正常
# /usr/local/openssl/bin 进入编译openssl目录
# ./openssl version
Openssl 1.1.1l 25 Aug 2021 编译后openssl版本

# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017 系统自带版本

3、编译安装Openssh

3.1、处理系统自带Openssh

注意:在执行当前操作时,确保当前的ssh会话不要断开。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# rpm -qa | grep openssh
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64

备份原版openssh配置
# cp -rf /etc/ssh /etc/ssh_bak

# rpm -e --nodeps `rpm -qa | grep openssh` 执行卸载openssh
# rpm -qa | grep openssh 查看openssh

验证基础工具正常使用,执行命令无报错即可
# curl -V
# wget -V
# yum --version

3.2、编译安装Openssh

下载地址

1
2
3
4
5
6
7
8
9
10
11
12
# tar -xvf openssh-8.7.tar.gz
# cd openssh-8.7
# ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl
# make && make install

复制可执行文件到系统`bin`目录下
# cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
# cp /usr/local/openssh/bin/ssh /usr/bin/ssh
# cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

复制sshd启动脚本
# cp contrib/redhat/sshd.init /etc/init.d/sshd

3.3、修改编译后的sshd_config文件

1
2
3
4
5
6
Port 22                      监听端口
PermitRootLogin yes 允许root登录
PasswordAuthentication yes 密码验证

在文件末尾加入如下内容:
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1

3.4、编译后的openssh添加开机自启

注意:当前操作切勿执行/etc/init.d/sshd restart,不然当前ssh会话会被强制断开。

正确方式

1
2
# /etc/init.d/sshd start
Starting sshd: [确定]

服务启动后检查配置的端口正常

1
2
3
4
5
6
7
8
# netstat -tpln | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:*

添加sshd开机自启
# chkconfig --list | grep sshd 查看当前系统sshd是否添加开机自启
# chkconfig sshd on 加入开机自启
# chkconfig --list | grep sshd 确认加入开机自启是否正常
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

4、验证Openssh升级

使用远程工具新增一个会话连接,确认能正常远程ssh连接到服务器上。
检查升级后的版本

1
2
# ssh -V
OpenSSH_8.7p1, OpenSSL 1.1.1l 25 Aug 2021

升级完满成功