OpenSSH和OpenSSL升级

需求

centos7.9升级SSH和SSL

OpenSSH升级为openssh9.8

OpenSSL升级为openssl-3.4.0

下载openssh最新版本与openssl对应版本

openssh最新版本下载地址

bash 复制代码
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

OpenSSL下载地址

这里下载的是3.4.0

bash 复制代码
wget https://github.com/openssl/openssl/releases/download/openssl-3.4.0/openssl-3.4.0.tar.gz

Openssl安装

安装前检查

查看Centos系统版本信息

bash 复制代码
cat /etc/redhat-release

查看openssl版本信息

bash 复制代码
openssl version

查看ssh版本信息

bash 复制代码
ssh -V

安装openssl

由于openssh9.8p1要求openssl版本大于等于1.1.1,因此需要升级安装openssl

解压

bash 复制代码
tar xf openssl-3.4.0.tar.gz -C /usr/local/

创建安装目录

bash 复制代码
mkdir /opt/openssl

编译安装

bash 复制代码
# 安装编译工具和prel依赖
yum -y install gcc make perl-IPC-Cmd perl-Data-Dumper
bash 复制代码
# 进入解压目录
cd /usr/local/openssl-3.4.0/
./config  --prefix=/opt/openssl
make && make install 

更新lib文件

检查openssl-3.4.0所需要的函数库

bash 复制代码
ldd /opt/openssl/bin/openssl

添加openssl-3.4.0的库文件路径到ld.so.conf

bash 复制代码
echo "/opt/openssl/lib64" >> /etc/ld.so.conf

更新系统函数库

bash 复制代码
ldconfig  --verbose

查看旧版本的openssl命令路径

bash 复制代码
which openssl

重名为openssl.old

bash 复制代码
 mv /bin/openssl /bin/openssl.old

使用软连接的方式更新openssl命令

bash 复制代码
ln -s /opt/openssl/bin/openssl /bin/openssl

查看openssl版本

bash 复制代码
openssl version

Openssh9.8安装

解压下载的安装包

bash 复制代码
tar xf openssh-9.8p1.tar.gz -C /usr/local/
mv openssh-9.8p1/ openssh

配置解压文件,开始编译

bash 复制代码
yum -y install zlib-devel pam-devel
bash 复制代码
sudo chmod 600 /etc/ssh/ssh_host_rsa_key
sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key
sudo chmod 600 /etc/ssh/ssh_host_ed25519_key
sudo chown root:root /etc/ssh/ssh_host_rsa_key
sudo chown root:root /etc/ssh/ssh_host_ecdsa_key
sudo chown root:root /etc/ssh/ssh_host_ed25519_key
sudo chmod 644 /etc/ssh/sshd_config
bash 复制代码
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/opt/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening
bash 复制代码
make && make install

修改启动sshd,init脚本

从源码目录下复制sshd.init到/etc/init.d/

bash 复制代码
cp /usr/local/openssh/contrib/redhat/sshd.init  /etc/init.d/

查看并修改sshd的新路径,将新的openssh安装路径更新

bash 复制代码
cat /etc/init.d/sshd.init | grep SSHD
sed -i "s/SSHD=\/usr\/sbin\/sshd/SSHD=\/usr\/local\/openssh\/sbin\/sshd/g" /etc/init.d/sshd.init
cat /etc/init.d/sshd.init | grep SSHD

查看并修改ssh-keygen的新路径,将新的ssh-keygen安装路径更新

bash 复制代码
cat -n /etc/init.d/sshd.init | grep ssh-keygen
sed -i "s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g" /etc/init.d/sshd.init
cat -n /etc/init.d/sshd.init | grep ssh-keygen

启动openssh,并设置开机启动

复制ssh的相关命令

bash 复制代码
cp -arp /usr/local/openssh/bin/* /usr/bin

重启OpenSSH

shell 复制代码
systemctl restart sshd

查看版本

bash 复制代码
ssh -V
shell 复制代码
OpenSSH_9.8p1, OpenSSL 3.4.0 22 Oct 2024
相关推荐
米小虾20 分钟前
AI Agent 安全实战指南:当智能体开始"不听话",开发者该如何应对?
人工智能·安全·agent
tntxia13 小时前
网络安全漏洞修复(一)
安全
泯泷2 天前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷2 天前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
Flynt6 天前
npm v12 来了:allowScripts 默认关闭,我的项目差点跑不起来
安全·npm·node.js
Web3探索者9 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
冬奇Lab11 天前
Skill 系列(02):Skill 安全风险——三类攻击面的实战测试
人工智能·安全·开源
Aphasia31114 天前
VPN 与内网穿透
安全
Mr_愚人派15 天前
当"Claude"不再是 Claude:一次第三方 API 代理引发的 AI 身份伪造排查实录
人工智能·安全
开发者联盟league16 天前
安装pnpm
ssh