Centos升级openssh及openssl

一、源码下载

https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/

二、依赖环境安装

yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make krb5-devel git meson ninja-build glib2-devel lcms2-devel -y

上传或者使用wget下载包

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz

三、源码编译安装

安装依赖库

yum groupinstall "Development Tools" -y

yum install zlib-devel openssl-devel pam-devel -y

解压源码包

tar -zxvf openssh-10.0p2.tar.gz

cd openssh-10.0p2

编译与安装

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-pam

  • 如果系统中已安装其他版本的OpenSSL,需将--with-ssl-dir参数设置为OpenSSL的实际安装路径。
  • 编译并安装:

make && make install

**error:**openssl版本低 需要先升级openssl 解决办法看文章最后

配置服务

  • 复制必要的配置文件和服务脚本:
复制代码
  cp -a contrib/redhat/sshd.init /etc/init.d/sshd
  cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd
  chmod +x /etc/init.d/sshd

更新系统服务:
*

复制代码
  systemctl daemon-reexec
  systemctl enable sshd
  systemctl start sshd

验证安装

  • ssh -V

四、用构建的预编译的RPM包

安装依赖

复制代码
yum -y install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make krb5-devel git meson ninja-build glib2-devel lcms2-devel -y

上传或wget下载openssh-10.0p2.tar.gz文件到/root目录下

bash 复制代码
cd /root/
tar -xvf openssh-10.0p2.tar.gz
mkdir -pv rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
cp openssh-10.0p2/contrib/redhat/openssh.spec rpmbuild/SPECS/
cp ~/openssh-10.0p2.tar.gz /root/rpmbuild/SOURCES
/cd rpmbuild/SPECS/
vi openssh.spec

打开这俩方便调试

把源码包放置在:/root/rpmbuild/SOURCES目录下 过程中发现openssh-10.0p2.tar.gz解压完为openssh-10.0p1 注意一下 开始构建可能会提示SOURCE下找不到包

执行:rpmbuild -bb openssh.spec 开始构建

过程中出现

解决:找到openssh.spec中%files server部分的内容

添加如下内容、再次执行构建rpm包命令

bash 复制代码
%attr(0755,root,root) %{_libexecdir}/openssh/sshd-auth

构建成功后 rpm包在以下路径:

/root/rpmbuild/RPMS/x86_64

RPM包升级及报错处理

备份配置文件

bash 复制代码
cp -rp /etc/ssh/ /etc/ssh-backup
cp -p /etc/pam.d/sshd /etc/pam.d/sshd-backup
cp -p /etc/sysconfig/sshd /etc/sysconfig/sshd-backup
cp -p /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service-backup

再执行yum安装升级

bash 复制代码
cd /root/rpmbuild/RPMS/x86_64
yum localinstall *.rpm -y

报错排查

sshd -t 校验配置文件

执行以下命令自动生成所有缺失的密钥类型(RSA、ECDSA、ED25519):

复制代码
`ssh-keygen -A`

确保密钥文件权限正确(仅root可读写):

复制代码
`chmod 600 /etc/ssh/ssh_host_*_key
chmod 644 /etc/ssh/ssh_host_*_key.pub`
复制代码
临时禁用SELinux:
setenforce 0
systemctl restart sshd

vim /etc/ssh/sshd_config 修改以下两行
复制代码
PermitRootLogin yes #允许root登陆、
PasswordAuthentication yes #允许使用密码登陆

升级Openssl

一、升级OpenSSL 1.1.1+版本

  1. 安装编译依赖

    复制代码
    `yum groupinstall "Development Tools" -y
    yum install zlib-devel pam-devel perl-IPC-Cmd -y`
  2. 下载并编译OpenSSL

    以OpenSSL 1.1.1w为例:

    复制代码
    `wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    tar -zxvf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w
    ./config --prefix=/usr/local/openssl --openssldir=/etc/ssl --shared zlib
    make -j$(nproc) && make install`
  3. 更新系统链接库

    bash 复制代码
    echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
    ldconfig
    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
    openssl version  # 验证应显示1.1.1w

    二、编译安装OpenSSH 10.0p2

  4. 下载源码并配置

    复制代码
    `wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz
    tar -zxvf openssh-10.0p2.tar.gz
    cd openssh-10.0p2
    ./configure \
      --prefix=/usr \
      --sysconfdir=/etc/ssh \
      --with-ssl-dir=/usr/local/openssl \
      --with-pam \
      --with-zlib`
  5. 编译与安装

    复制代码
    `make -j$(nproc) && make install`
  6. 配置服务与验证

    复制代码
    `cp contrib/redhat/sshd.init /etc/init.d/sshd
    chmod +x /etc/init.d/sshd
    systemctl daemon-reload
    systemctl restart sshd
    ssh -V # 应显示OpenSSH_10.0p2
    可能会出现以下情况
    `

    执行以下命令自动生成所有缺失的密钥类型(RSA、ECDSA、ED25519):

    复制代码
    `ssh-keygen -A`

    若特定密钥缺失,可单独生成:

    复制代码
    `# 生成RSA密钥
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
    # 生成ECDSA密钥
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
    # 生成ED25519密钥
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''`

    确保密钥文件权限正确(仅root可读写):

    复制代码
    `chmod 600 /etc/ssh/ssh_host_*_key
    chmod 644 /etc/ssh/ssh_host_*_key.pub`临时禁用SELinux:
    setenforce 0
    systemctl restart sshd
    
    vim /etc/ssh/sshd_config 修改以下两行
复制代码
PermitRootLogin yes #允许root登陆、
PasswordAuthentication yes #允许使用密码登陆
相关推荐
wanhengidc3 小时前
云手机的适配性怎么样?
运维·服务器·安全·智能手机·云计算
jimy13 小时前
安卓里运行Linux
linux·运维·服务器
哟哟耶耶4 小时前
js-fetch流式实现中断重连
运维·服务器
爱凤的小光4 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
耗同学一米八5 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S6 小时前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_890443026 小时前
Linux 基础IO
linux·c语言
字节数据平台7 小时前
刚刚,火山引擎多模态数据湖解决方案发布大数据运维Agent
大数据·运维·火山引擎
智慧地球(AI·Earth)7 小时前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
原神启动17 小时前
Docker 场景化作业:生产环境容器操作实训
运维·docker·容器