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 #允许使用密码登陆
相关推荐
满天星83035772 小时前
【Linux】【进程间通信】管道
linux·运维·服务器
赖small强2 小时前
【Linux驱动开发】Linux EXT4文件系统技术深度解析与实践指南
linux·驱动开发·ext4·superblock·super block·block bitmap·inode bitmap
linux修理工2 小时前
CentOS Stream 9 软件仓库 清华源
linux·运维·centos
naodianbozzz2 小时前
nginx的https的搭建
运维·nginx·https
liefyuan2 小时前
【嵌入式Linux】添加sshd (顺便dropbear--scp命令)
linux·运维
wasp5202 小时前
Hudi 元数据管理分析
java·大数据·linux·hudi·数据湖·数据湖仓
Han.miracle2 小时前
JavaEE--网络编程 传输层 (一) UDP TCP特点
运维·服务器·网络·java-ee·三次握手·四次挥手·超时重传
Gogo8162 小时前
docker 容器
运维·docker·容器
^乘风破浪^2 小时前
centos7离线升级openssh
linux