第一章 下载软件包及依赖
-
我用的CentOS 7.9系统默认集成了许多依赖,所以我只需安装PAM这个依赖,大家如果缺什么依赖就自行到网络自行下载,这里需要注意的是openssl依赖的软件太多,所以在升级openssl时,不用卸载旧的版本。如果强制卸载可能导致系统不能正常运行
安装openssl所需要的依赖
1
2
3
4
5
6
7yum -y install zlib-devel gcc perl
[root@localhost src]# openssl version #检查当前版本
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@localhost src]# which openssl #检查openssl目录
/usr/bin/openssl
[root@localhost src]# whereis openssl #升级新版本后重新链接替换为新版本对应的 文件目录
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/share/man/man1/ openssl.1ssl.gz备份openssl软链接
1
2
3[root@localhost src]# mkdir /home/ssl_bak
[root@localhost src]# mv /usr/bin/openssl /home/ssl_bak/
[root@localhost src]# mv /etc/ssl /home/ssl_bak/etc_ssl开始升级OpenSSL
1
2
3
4
5[root@localhost src]# tar -zxf openssl-1.1.1l.tar.gz
[root@localhost src]# cd openssl-1.1.1l
[root@localhost openssl-1.1.1l]# ./config --prefix=/usr/local/openssl --openssldir=/etc/ssl shared zlib
[root@localhost openssl-1.1.1l]# make
[root@localhost openssl-1.1.1l]# make install配置升级后的openssl的相关目录(链接openssl程序)
1
2
3
4
5[root@localhost src]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@localhost src]# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
[root@localhost src]# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
[root@localhost src]# openssl version #查看升级后的版本
OpenSSL 1.1.1l 24 Aug 2021
第二章 开启Telnet
开启Telnet服务是为了防止升级OpenSSH过程中出现不可预估的故障。例如:停电、服务器突发性故障而导致SSH无法登录。很显然你不想成为那个倒霉蛋子,当然如果你觉得你很勇可以忽略此步骤。
Telnet服务在CentOS7上是单独的一个服务,不用安装xinetd,只要安装telnet-server1
yum install telnet-server #安装Telnet服务
默认telnet不允许root用户登陆,需要做一些配置vim /etc/securetty 需要添加一些pts终端入口,就能以root用户登陆
1
2
3
4
5
6
7
8
9
10pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9telnet使用的是23号端口,如果你的服务器启用了防火墙请临时放行23端口
1
2
3
4
5# 启用Telnet服务
[root@localhost ~]# systemctl enable telnet.socket
[root@localhost ~]# systemctl start telnet.socket
# 使用Telnet工具登录服务器 Telnet 192.168.0.1 23
第三章 开始升级OpenSSH
-
chmod 600 /etc/ssh/* #设置文件夹权限,以免写入失败
设置文件夹权限以及备份ssh启动文件
1
2
3
4
5
6
7
8
9
10chmod 600 /etc/ssh/* #设置文件夹权限,以免写入失败
[root@localhost src]# cp /usr/bin/ssh /usr/bin/ssh.bak
[root@localhost src]# cp /usr/sbin/sshd /usr/sbin/sshd.bak
[root@localhost src]# mv /etc/ssh /etc/ssh.bak
rpm -ivh pam-devel-1.1.8-23.el7.x86_64.rpm --nodeps --force # 安装依赖
[root@localhost src]# tar -zxvf openssh-8.8p1.tar.gz
[root@localhost src]# cd openssh-8.8p1
[root@localhost openssh-8.8p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib --with-ssl-engine --with-ssl-dir=/usr/local/openssl
[root@localhost openssh-8.8p1]#make # 编译
[root@localhost openssh-8.8p1]#make install # 编译通过直接安装修改启动文件和PAM
1
2
3[root@localhost openssh-8.8p1]# cp ./contrib/redhat/sshd.init /etc/init.d/sshd
[root@localhost openssh-8.8p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@localhost openssh-8.8p1]# mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_bak编辑/etc/pam.d/sshd文件,删除原有配置,替换如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepareOpenSSH升级后默认不允许root登陆,需要修改编辑/etc/ssh/sshd_config
1
2
3
4
5
6
7
8PermitRootLogin yes # 在空白处添加
cat /etc/selinux/config # 检查selinux状态是否关闭,如果开启会导致服务无法启动成功
systemctl restart sshd.service # 重启sshd服务
systemctl status sshd.service # 检查服务
ps -ef | grep sshd #检查SSH进程
systemctl enable sshd.service # 设置开机启动
[root@localhost ~]# ssh -V #检查SSH版本
OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021