云计算百科
云计算领域专业知识百科平台

Linux 服务器升级 openssh9.8 详解!!

2024年7月1日,openssh 发布了最新版 9.8,但是下载最新版openssh9.8,也需要将 openssl 也一并进行升级。

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

openssh 最新版本下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable//

openssl 对应版本下载地址(下载 OpenSSL 1.1.1v)

Release OpenSSL 1.1.1v · openssl/openssl · GitHub

二、 Openssl 安装

  • 安装前的检查:

  • 查看 Centos 系统版本信息

    [root@reece ~]# cat /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)

    查看 openssl 版本信息

    [root@reece ~]# openssl version
    OpenSSL 1.0.2k-fips 26 Jan 2017

    查看 ssh 版本信息

    [root@reece ~]# ssh -V
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

  • 注意 openssh9.8p1 要求 openssl 版本大于等于 1.1.1,所以需要先安装openssl。

  • 将 openssl-1.1.1v 解压到 /usr/local 目录下

    [root@reece ~]# ls
    anaconda-ks.cfg openssh-9.8p1.tar.gz openssl-1.1.1v.tar.gz
    [root@reece ~]# tar xzf openssl-1.1.1v.tar.gz -C /usr/local

    查看是否解压到当前目录

    [root@reece ~]# ll /usr/local/ | grep openssl
    drwxrwxr-x. 19 root root 4096 Aug 1 2023 openssl-1.1.1v

    创建安装目录

    [root@reece ~]# mkdir /opt/openssl
    [root@reece ~]# ll /opt/openssl/
    total 0

    进入 openssl-1.1.1v 目录

    [root@reece ~]# cd /usr/local/openssl-1.1.1v/
    [root@reece openssl-1.1.1v]# ls
    ACKNOWLEDGEMENTS config.com engines LICENSE NOTES.VMS test
    apps Configurations e_os.h ms NOTES.WIN tools
    appveyor.yml Configure external NEWS os-dep util
    AUTHORS CONTRIBUTING FAQ NOTES.ANDROID README VMS
    build.info crypto fuzz NOTES.DJGPP README.ENGINE wycheproof
    CHANGES demos include NOTES.PERL README.FIPS
    config doc INSTALL NOTES.UNIX ssl

    预编译之前的依赖

    [root@reece openssl-1.1.1v]# yum -y install pam-devel zlib zlib-devel gcc make

    配置编译和安装过程 “–prefix=选项配置安装目录”

    [root@reece openssl-1.1.1v]# ./config –prefix=/opt/openssl

    构建程序所需指令和依赖

    [root@reece openssl-1.1.1v]# make

    安装编译好的 openssl-1.1.1v

    [root@reece openssl-1.1.1v]# make install

    注:上面的几步必须全部没有报错(error)才可以进行下一步,无报错才视为安装成功。

  • 更新lib文件

  • 检查 openssl-1.1.1v 所需要的函数库

    [root@reece openssl-1.1.1v]# ldd /opt/openssl/bin/openssl
    linux-vdso.so.1 => (0x00007ffe0c941000)
    libssl.so.1.1 => not found
    libcrypto.so.1.1 => not found
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f6ef4997000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6ef477b000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f6ef43ad000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f6ef4b9b000)

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

    [root@reece openssl-1.1.1v]# echo "/opt/openssl/lib" >> /etc/ld.so.conf

    更新系统函数库

    [root@reece openssl-1.1.1v]# ldconfig –verbose

    查看旧版本的 openssl 命令路径

    [root@reece openssl-1.1.1v]# which openssl
    /usr/bin/openssl

    重名了为 openssl.old

    [root@reece openssl-1.1.1v]# mv /bin/openssl /bin/openssl.old

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

    [root@reece openssl-1.1.1v]# ln -s /opt/openssl/bin/openssl /bin/openssl

    查看 openssl 版本

    [root@reece openssl-1.1.1v]# openssl version
    OpenSSL 1.1.1v 1 Aug 2023

    三、Openssh9.8 安装

  • 解压下载的安装包,卸载原来包

  • [root@reece ~]# tar xzf openssh-9.8p1.tar.gz

    卸载 openssh 的 rpm 包

    [root@reece ~]# for i in $(rpm -qa | grep openssh);do rpm -e $i –nodeps;done

  • 配置解压文件,开始编译

  • [root@reece ~]# ls
    anaconda-ks.cfg openssh-9.8p1 openssh-9.8p1.tar.gz openssl-1.1.1v.tar.gz
    [root@reece ~]# cd openssh-9.8p1

    配置编译和安装过程,"–prefix=" 配置安装目录,"–sysconfdir=" 配置文件路径,"–with-ssl-dir=" openssl 的安装路径

    [root@reece openssh-9.8p1]# ./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

    构建程序所需指令和依赖关系

    [root@reece openssh-9.8p1]# make

    安装并编译 openssh9.8p1

    [root@reece openssh-9.8p1]# make install

    注:上面的几步必须全部没有报错(error)才可以进行下一步,无报错才视为安装成功。

    四、修改启动 sshd,init 脚本

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

    [root@reece ~]# cp /root/openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/

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

    [root@reece ~]# cat /etc/init.d/sshd.init | grep sshd
    [root@reece ~]# sed -i "s/SSHD=\\/usr\\/sbin\\/sshd/SSHD=\\/usr\\/local\\/openssh\\/sbin\\/sshd/g" /etc/init.d/sshd.init
    [root@reece ~]# cat /etc/init.d/sshd.init | grep SSHD
    SSHD=/usr/local/openssh/sbin/sshd
    $SSHD -t
    $SSHD $OPTIONS && success || failure
    killproc $SSHD -TERM
    killproc $SSHD -HUP
    status $SSHD

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

    [root@reece ~]# cat -n /etc/init.d/sshd.init | grep ssh-keygen
    41 /usr/bin/ssh-keygen -A
    [root@reece ~]# sed -i "s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g" /etc/init.d/sshd.init
    [root@reece ~]# cat -n /etc/init.d/sshd.init | grep ssh-keygen
    41 /usr/local/openssh/bin/ssh-keygen -A

    五、启动 openssh,并设置开机启动

    复制 ssh 的相关命令

    [root@reece ~]# cp -arp /usr/local/openssh/bin/* /usr/bin

    启动ssh服务

    [root@reece ~]# /etc/init.d/sshd.init

    查看版本

    [root@reece ~]# ssh -V

    添加开机启动

    [root@reece ~]# chmod +x /etc/rc.d/rc.local
    [root@reece ~]# echo "/etc/init.d/sshd.init start" >> /etc/rc.d/rc.local

    报错解决

    如果启动不成功,通过命令查看,是什么原因导致的

    #通过 systemctl status sshd 查看 sshd 是否正常启动

    [root@reece ~]# systemctl status sshd

    如果执行上边命令也不可以,那么需要执行:

    [root@reece ~]# yum install -y openssh-server

    执行后,如果显示 activing 或者 dead 没有正常启动,那么需要执行命令,查看具体异常原因:

    [root@reece ~]# tail -f /var/log/messages

    报错二:

    解决报错:

    [root@reece ~]# vim /etc/ssh/sshd_config

    取消注释

    重启sshd

    [root@reece ssh]# systemctl restart sshd

    阿里云解决方案(参考):

    通过SSH客户端登录Linux实例时提示“Permission denied, please try again”错误怎么办?_云服务器 ECS(ECS)-阿里云帮助中心

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Linux 服务器升级 openssh9.8 详解!!
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!