离线升级openssl
- 下载安装包 https://www.openssl.org/source/
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
- 解压安装包
tar -xzvf openssl-1.1.1k.tar.gz
- 进入安装
cd openssl-1.1.1k/
./config --prefix=/usr/local/openssl #指定安装路径
make
make install
- 最后替换当前系统的旧版本 openssl 「先保存原来的」
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl3.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
报错
处理(https://www.cpan.org/src/README.html)
wget https://www.cpan.org/src/5.0/perl-5.32.1.tar.gz
tar -xzf perl-5.32.1.tar.gz
cd perl-5.32.1
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install
坑1:安装了anaconda,系统中存在两种openssl,一种是anaconda安装的,另一种是源码安装的,导致在很多时候引起版本冲突问题
which openssl 时显示的是anaconda3/bin/openssl
解决办法:把anaconda3/bin/openssl改个名字,然后执行source ~/.bashrc
升级openssh
openssh下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
-
解压 tar -zvxf openssh-8.6p1.tar.gz
-
移除旧版本
mv /etc/ssh /etc/ssh.old
- 编译安装
cd openssh-8.6p1/
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening
make && make install
- 修改启动脚本
# 拷贝启动脚本
cp ./contrib/redhat/sshd.init /etc/init.d/sshd
# 修改启动脚本
vim /etc/init.d/sshd
# 此路径新版本的openssh安装路径
SSHD=/usr/local/openssh/sbin/sshd
- 将原来备份的/etcssh.old/sshd_config 写到回到/etc/ssh/sshd_config
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.origin #备份初始化的配置
cp -p /etcssh.old/sshd_config /etc/ssh/sshd_config #还远升级前的配置
- 卸载原有ssh
for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps ;done
- 替换命令并重启
cp -arp /usr/local/openssh/bin/* /usr/bin/ #替换相关命令
service sshd restart #重启sshd服务
- 设置开机自启
chkconfig --add sshd
chkconfig --level 2345 sshd on
ssh升级成功后使用ssh 可能会出现host key verification failed.
解决办法:重命名或删除留存的秘钥
如 mv /home/user/.ssh/known_hosts /home/user/.ssh/known_hosts.old