养成备份的好习惯。做任何操作前,尤其是对文件进行操作,需要对其进行备份。

一、查看版本

**操作系统版本:**

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

**Openssh&&Openssl版本:**

[root@localhost ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

二、准备工作

安装Telnet服务,防止升级失败不能远程连接服务器,查看telnet server是否安装:  rpm -qa | grep telnet

[root@localhost ~]# rpm -qa | grep telnet
安装telnet
[root@localhost ~]#yum install xinetd telnet-server -y

备份文件securetty:cp /etc/securetty /etc/securetty.bak,配置telnet登录的终端类型,增加一些pts终端:

cat >> /etc/securetty <<EOF

pts/0

pts/1

pts/2

pts/3

EOF

或者

centos 稳定版本 centos最新版本_centos 稳定版本

启动telnet服务,并设置开机自动启动

systemctl enable xinetd

systemctl enable telnet.socket

systemctl start telnet.socket

systemctl start xinetd

netstat -tnl |grep 23

centos 稳定版本 centos最新版本_服务器_02

外部主机与虚拟机的端口不通,说明虚拟机的防火墙未放行,使用命令放行23端口。

firewall-cmd --zone=public --add-port=23/tcp --permanent(永久放行)

firewall-cmd --reload(重新加载配置)

centos 稳定版本 centos最新版本_运维_03

此时外部主机可以ping通虚拟机的23端口,说明Telnet服务正常,我们可以使用Telnet远程管理虚拟机了。

centos 稳定版本 centos最新版本_bc_04

备份并移除老文件 ( 这些配置可能影响装完以后的登陆 所以备份)

mkdir /root/update
cd /root/update
cp /etc/ssh/sshd_config sshd_config
cp /etc/pam.d/sshd sshd
yum remove -y openssl-devel
rm -rf /etc/ssl

最后安装相关依赖:yum install  -y gcc gcc-c++ glibc make autoconf pcre-devel  pam-devel rpm-build pam* zlib*

三、升级openssl

备份

mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/bin/openssl /usr/bin/openssl.old
mv /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old

如下两个库文件必须先备份,因系统内部分工具(如yum、wget等)依赖此库,而新版OpenSSL不包含这两个库

cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old
cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old

卸载:查找openssl包:rpm -qa | grep openssl 根据包名卸载:rpm -e --nodeps openssl-1.0.1e-42.el6.x86_64。
卸载全部相关的openssl包(rpm -qa |grep openssl|xargs -i rpm -e --nodeps {})

centos 稳定版本 centos最新版本_centos 稳定版本_05

安装:官网下载openssl最新包。wget --no-check-certificate https://ftp.openssl.org/source/openssl-1.1.1t.tar.gz /root

centos 稳定版本 centos最新版本_linux_06

解压:tar-zxvf /root/openssl-1.1.1t.tar.gz 
cd /openssl-1.1.1t目录后编
./config --prefix=/usr --openssldir=/etc/ssl --shared zlib #必须加上--shared,否则编译时会找不到新安装的openssl的库而报错
编译:make clean(删除之前的可执行文件)
make && make install(编译并安装)
echo $?(判断编译是否成功,0表示成功)
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl
echo "/usr/local/lib" >> /etc/ld.so.conf
echo "/usr/local/lib64" >> /etc/ld.so.conf
/sbin/ldconfig
openssl version

[root@localhost openssl-1.1.1t]# openssl version
OpenSSL 1.1.1t 7 Feb 2023

升级成功。

恢复共享库:由于OpenSSL_1.0.2k不提供libcrypto.so.10和libssl.so.10这两个库,而yum、wget等工具又依赖此库,因此需要将先前备份的这两个库进行恢复,其他的可视情况考虑是否恢复。

mv /usr/lib64/libcrypto.so.10.old /usr/lib64/libcrypto.so.10
mv /usr/lib64/libssl.so.10.old /usr/lib64/libssl.so.10

四、升级openssh

备份: mv /etc/ssh /etc/ssh.old
卸载当前openssh :rpm -qa |grep openssh|xargs -i rpm -e --nodeps {}

下载openssh:
wget --no-check-certificate https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz /root
解压tar -zxvf openssh-9.3.tar.gz,进入ssh目录
编译:./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl   --with-zlib   --with-md5-passwords   --with-pam
make clean
make && make install
echo $?
cp -af contrib/redhat/sshd.init /etc/init.d/sshd
cp -af contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd

编辑配置文件:
cat >> /etc/ssh/sshd_config <<EOF
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
EOF

chkconfig --add sshd 添加服务
mv /usr/lib/systemd/system/sshd.service /root/update/sshd.service
chkconfig sshd on
systemctl enable sshd
systemctl start sshd

升级完成,查看升级后的版本。

centos 稳定版本 centos最新版本_服务器_07

测试:

centos 稳定版本 centos最新版本_运维_08

1、升级成功后如果使用xshell连接提示服务器拒绝连接,则安装openssh-server
[root@localhost ]# yum -y install openssh-server 
(local@localhost ~)# chmod 600 /etc/ssh/ssh_host_rsa_key
(local@localhost ~)# chmod 600 /etc/ssh/ssh_host_ecdsa_key

centos 稳定版本 centos最新版本_运维_09

2、修改配置vim /etc/ssh/sshd_config,找一个正常ssh的服务器。
3、防火墙开通22端口,允许外部访问。
4、安装过程有什么错误使用sshd -t查看错误日志。