在离线CentOS 7 上升级OpenSSH到最新版本

抛开场景聊需求都是耍流氓

在很多企业和高校内做私有化部署的服务的时候,信息中心都会给一台服务器,不管是虚拟机或者是实体机,都会定期做漏洞扫描,每次一扫出来,都是很多漏洞,要求中高风险的漏洞必须修复,否则谁没事去搞这玩意呢。

比较麻烦的是,这些服务器大多都是纯离线,利用VPN、跳板机、远程桌面进行访问的,这无疑给软件升级带来了很多麻烦。

这次需要升级的内容是OpenSSH,为什么有这篇文章,因为我参考了很多文章,内容很多都不一样,有点连版本号也没有,都是拼拼凑凑来实现的,所以在这里做个记录

步骤

安装Telnet

为了确保在升级过程顺利,最好安装一个Telnet服务,来确保后续可以继续操作,否则一旦服务器失联,一定是一件头皮发麻的事情。

  1. 下载以下文件上传到服务器:
    参考了文章: https://lblog.net/?p=282 但是此站点现在已经无法访问

    telnet-0.17-65.el7_8.x86_64.rpm
    telnet-server-0.17-65.el7_8.x86_64.rpm
    xinetd-2.3.15-14.el7.x86_64.rpm

  2. 安装以上文件

    rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm
    rpm -ivh telnet-0.17-65.el7_8.x86_64.rpm
    rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm
  3. 修改配置
    如果没有这个文件,就新建

    vi /etc/xinetd.d/telnet

    主要需要将disable改为no,后续可将其改为yes重启或关闭xinetd服务即可关闭telnet

    service telnet
    {
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
    }
  4. 在另外的机器上使用telnet命令连接你的服务器,确保可以正常使用

升级OpenSSH

接下来的升级,我大部分是参考了 https://www.cnblogs.com/lfxx/p/17584636.html 这篇文章,但是中间编译 OpenSSH的时候失败了,还是在上面那篇文章上找到了解决办法

  1. 下载最新版的文件,包括zlib,openssl,和openssh
    zlib官网:https://zlib.net/ 我下载的是 1.3.1
    openssl官网:https://www.openssl.org/source/old/1.1.1/index.html 下载1.1.1?版本的,我这里使用的是1.1.1u
    openssh官网:https://www.openssh.com/openbsd.html 我使用的是 openssh-9.7.tar.gz

    将这些文件上传到你的服务器上去

  2. 确保你有gcc

    没有就安装,下载地址参考:  
    https://blog.csdn.net/vipee1/article/details/127264883
    tar zxvf  /root/gcc-c++-4.8.5-39.el7.x86_64.tar.gz
    cd /root/cd gcc-c++-4.8.5-39.el7.x86_64
    rpm -Uvh *.rpm --nodeps --force
  3. 安装zlib

    #进入解压的zlib目录
    ./configure --prefix=/usr/local/zlib
    make && make install
    echo '/usr/local/zlib/lib' >> /etc/ld.so.conf  
    ldconfig -v
  4. 安装openSSL

    #进入解压好的openssl目录中
    ./config --prefix=/usr/local/ssl -d shared
    make && make install
    echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
    ldconfig -v
  5. 编译安装openSSH

    #进入openssh目录
    ./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
    make && make install
  6. 卸载原来的包,并且配置ssh

    #卸载原来的包
    rpm -qa | grep openssh | grep -v client | xargs  rpm -e --nodeps
    #配置ssh并备份
    echo 'PermitRootLogin yes' >> /usr/local/openssh/etc/sshd_config
    
    echo 'PubkeyAuthentication yes' >> /usr/local/openssh/etc/sshd_config
    
    echo 'PasswordAuthentication yes' >> /usr/local/openssh/etc/sshd_config
    
    mv -f /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    
    scp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
    
    mv -f /usr/sbin/sshd /usr/sbin/sshd.bak
    
    scp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
    
    mv -f /usr/bin/ssh /usr/bin/ssh.bak
    
    scp /usr/local/openssh/bin/ssh /us r/bin/ssh
    
    mv -f /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
    
    scp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
    
    mv -f /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
    
    scp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub  /etc/ssh/ssh_host_ecdsa_key.pub
    
    scp /root/openssh-9.3p1/contrib/redhat/sshd.init /etc/init.d/sshd
    
    chmod +x /etc/init.d/sshd
    
    chkconfig --add sshd
    
    chkconfig sshd on
    
    chmod 600 /etc/ssh/ssh_host_rsa_key
    
    chmod 600 /etc/ssh/ssh_host_ecdsa_key
    
    chown -R root.root /var/empty/sshd
    
    chmod 744 /var/empty/sshd
    
    echo "---重启sshd---"
    systemctl restart sshd
    
    ssh -V

站内相关文章:

Comment ()
如果您有不同的看法,或者疑问,欢迎指教