养成备份的好习惯。做任何操作前,尤其是对文件进行操作,需要对其进行备份。
一、查看版本
**操作系统版本:**
[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
或者
启动telnet服务,并设置开机自动启动
systemctl enable xinetd
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
netstat -tnl |grep 23
外部主机与虚拟机的端口不通,说明虚拟机的防火墙未放行,使用命令放行23端口。
firewall-cmd --zone=public --add-port=23/tcp --permanent(永久放行)
firewall-cmd --reload(重新加载配置)
此时外部主机可以ping通虚拟机的23端口,说明Telnet服务正常,我们可以使用Telnet远程管理虚拟机了。
备份并移除老文件 ( 这些配置可能影响装完以后的登陆 所以备份)
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 {})
安装:官网下载openssl最新包。wget --no-check-certificate https://ftp.openssl.org/source/openssl-1.1.1t.tar.gz /root
解压: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
升级完成,查看升级后的版本。
测试:
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
2、修改配置vim /etc/ssh/sshd_config,找一个正常ssh的服务器。
3、防火墙开通22端口,允许外部访问。
4、安装过程有什么错误使用sshd -t查看错误日志。