源码升级安装openssh9.9p2+openssl3.5.0+zlib 1.3.1

# 备份yum源

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

 

# 下载阿里云源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

 

# 删除所有缓存的包和头文件

yum clean all

  

# 生成yum数据源缓存

yum makecache

 

# 安装升级必备库

yum install -y gcc make perl pam-devel zlib-devel wget tar systemd-devel libedit-devel‌ perl-IPC-Cmd perl-Data-Dumper perl-CPAN

 

# 解压源码包

tar -zxvf zlib-1.3.1.tar.gz
tar -zxvf openssl-3.5.0.tar.gz
tar -zxvf openssh-9.9p2.tar.gz

 

# 预编译zlib

./configure --prefix=/usr/local/zlib-1.3.1

 

# 编译安装zlib

make -j4 && make -j4 install

 

# 预编译openssl

./Configure --prefix=/usr/local/openssl-3.5.0 shared zlib

 

# 编译安装

make -j4 && make -j4 install

 

# 创建配置文件并写入库路径

touch /etc/ld.so.conf.d/openssl-3.5.0.conf
sed -i '1i /usr/local/openssl/lib64/etc/ld.so.conf.d/openssl-3.5.0.conf

 

# 在/etc/ld.so.conf顶部添加优先级路径

sed -i '1i include /etc/ld.so.conf.d/openssl-3.5.0.conf' /etc/ld.so.conf

 

# 更新动态库缓存,如果刷新不成功可以加 -v 参数强制刷新

ldconfig

 

# 备份openssl(如要保留系统默认版本,可以跳过这步)

mv /usr/bin/openssl /usr/bin/openssl.bak

 

# 从安装目录复制openssl到系统目录(如要保留系统默认版本,可以跳过这步)

cp /usr/local/openssl/bin/openssl /usr/bin/

 

# 备份ssh配置文件

mv /etc/ssh/ /etc/ssh.bak

 

# 预编译openssh

./configure --prefix=/usr/local/openssh-9.9p2 --with-zlib=/usr/local/zlib-1.3.1 --with-ssl-dir=/usr/local/openssl-3.5.0 --sysconfdir=/etc/ssh --with-pam --with-systemd

 

# 编译安装openssh

make -j4 && make -j4 install

 

# 备份ssh守护进程

mv /usr/sbin/sshd /usr/sbin/sshd.bak

 

# 从安装目录复制守护进程到系统目录

cp /usr/local/openssh/sbin/sshd /usr/sbin/

 

# 备份ssh客户端相关进程

mv /usr/bin/scp /usr/bin/scp.bak
mv /usr/bin/sftp /usr/bin/sftp.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/bin/ssh-add /usr/bin/ssh-add.bak
mv /usr/bin/ssh-agent /usr/bin/ssh-agent.bak
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
mv /usr/bin/ssh-keyscan /usr/bin/ssh-keyscan.bak

 

# 从安装目录复制客户端进程到系统目录

cp /usr/local/openssh/bin/scp /usr/bin/scp
cp /usr/local/openssh/bin/sftp /usr/bin/sftp
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
cp /usr/local/openssh/bin/ssh-add /usr/bin/ssh-add
cp /usr/local/openssh/bin/ssh-agent /usr/bin/ssh-agent
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan

 

# 查看ssh版本

sshd -V

 

# 完成

# 如过程遇到错误,可以参考以下命令排查问题

# 在用户当前的 PATH 环境变量中查找 sshd 可执行文件的路径。

which sshd

 

# 在系统预定义的标准目录中(如 /bin, /sbin, /usr/bin, /usr/sbin, /usr/share/man 等)查找 sshd 的‌二进制文件、源码和手册页。

whereis sshd

 

# 查看可执行文件或共享库的动态依赖关系

ldd /usr/sbin/sshd
ldd /usr/bin/openssl
idconfig -p | grep /usr/bin/openssl

 

# 在运行中的进程里,列出当前正在加载某库的进程。

yum -y install lsof
lsof /usr/lib64/libssl.so.3

 

posted @ 2025-04-15 17:28  剑小秀  阅读(808)  评论(0)    收藏  举报