抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

如何离线升级openssh和openssl

1、环境检查

image-20211120235204382

先确保你的服务器上已经有gcc,gcc-c++。这两个是编译工具。

1
rpm -qa |grep gcc

image-20211120235224223

缺少

image-20211120235252329

正常应该是这样

缺少则安装gcc等编译环境

1
2
3
#把相关的rpm包全部放到gcc文件夹
#进入gcc文件夹,忽略依赖安装
rpm -Uvh --force --nodeps *.rpm

image-20211120235530863

2、编译安装openssl

下载最新版:https://mirrors.cloud.tencent.com/openssl/source/

image-20211120235556490

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#备份旧版
mv /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.2k_bak
mv /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so.1.0.2k_bak
#解压
tar -zxvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
#添加openssl配置
./config --prefix=/usr/local/openssl
#编译
make
#卸载旧版本
for i in $(rpm -qa |grep openssl);do rpm -e $i --nodeps ;done
#安装
make install
#配置相关软链
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig
cp /usr/local/openssl/lib/libssl.so.1.1 /lib64/libssl.so.1.1
cp -f /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
cp /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64
ln -sf /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10
ln -sf /usr/lib64/libcrypto.so.1.1 /lib64/libcrypto.so.10
ln -sf /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so
ln -sf /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so.10
ln -sf /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/include/openssl /usr/include/openssl
openssl version -a
#修改1.0版软链
mv /usr/lib64/libcrypto.so.1.0.2k_bak /usr/lib64/libcrypto.so.1.0.2k
ln -fs /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10
mv /usr/lib64/libssl.so.1.0.2k_bak /usr/lib64/libssl.so.1.0.2k
ln -sf /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so.10

3、编译安装openssh

下载最新版:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

image-20211120235616921

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#进入openssh文件夹,并配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl
#执行make
make

#卸载 旧版本的openssh
for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps ;done

#安装新版本openssh
sudo make install

#查看新版的本号
ssh -V

// 在使用ssh登陆试试
sudo cp contrib/redhat/sshd.init /etc/init.d/sshd

#加入开机启动
sudo chkconfig --add sshd
sudo chkconfig sshd on

# 修改配置 PermitRootLogin yes
sudo vim /etc/ssh/sshd_config

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

// 重启服务
sudo service sshd restart

image-20211120235714131

1
2
3
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key

4、升级后的问题

1)无法登陆ssh
1
2
临时关闭 setenforce 0 
#设置SELinux 成为permissive模式 setenforce 1 设置SELinux 成为enforcing模式 修改配置文件需要重启服务器 修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled
2)docker网络异常

重启docker服务

1
systemctl restart docker
3)Sftp账号异常

因为/etc/ssh/sshd_config文件更新后为全新文件,相关的配置也会被修改。需按照升级前的配置修改。