• Linux系统:OpenSSH7.4p升级到9.0p(服务器漏洞)


    清华大学开源软件镜像站下载地址:
    https://mirrors.tuna.tsinghua.edu.cn/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz

    一、升级
    0、安装Telnet
    (1)为防止安装失败,无法用ssh做远程连接,因此先安装telnet

    yum -y install telnet*
    systemctl enable telnet.socket
    systemctl start telnet.socket
    
    • 1
    • 2
    • 3
    注:安全文件关闭或者修改(否则root无法telnet登录)
    firewall-cmd --zone=public --add-port=23/tcp --permanent
    再重启防火墙
    systemctl restart firewalld.service
    看防火墙所有开放的端口
    firewall-cmd --zone=public --list-ports
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1、准备工作
    查询SSH版本

    ssh -V
    
    • 1

    在这里插入图片描述
    进入/usr/local/目录

     cd /usr/local/
     mkdir openssh
     cd openssh/
    
    • 1
    • 2
    • 3

    2、备份原SSH

    mv /usr/sbin/sshd /usr/sbin/sshd.bak
    mv /usr/bin/ssh /usr/bin/ssh.bak
    mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
    mv /etc/ssh /etc/ssh.bak
    ``
    3、 上传openssh-9.0p1.tar.gz到openssh目录下并解压
    
    ```powershell
     tar -zxvf openssh-9.0p1.tar.gz
    cd /home/user/openssh/openssh-9.0p1/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4、编译校验

    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening`
    
    • 1

    执行完成如图
    在这里插入图片描述

    此处执行到最后经常会报错,如openssl-devel等各种rpm包没有安装,并且安装包之间都有相互依赖和冲突,依次安装即可,主要是检查rpm下列包是否安装

    yum install keyutils-libs rpm-build -y
    yum install krb5-devel
    yum install libcom_err-devel.i686 -y
    yum -y install libselinux-devel.i686 
    yum -y install pam-devel.x86_64 
    yum -y install openssl-devel.x86_64
    yum -y install pkgconfig.i686 
    yum -y install vsftpd.x86_64
    yum -y install zlib-devel.i686
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5、编译安装

    make && make install
    
    • 1

    编译成功如图
    在这里插入图片描述
    6、复制到全局使用

    cp /usr/local/sbin/sshd /usr/sbin/
    cp /usr/local/bin/ssh /usr/bin/
    cp /usr/local/bin/ssh-keygen /usr/bin/
    ln -s /usr/local/etc /etc/ssh
    
    • 1
    • 2
    • 3
    • 4

    7、查看版本
    在这里插入图片描述
    8、修改配置信息并重启

    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
    echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
    
    • 1
    • 2
    • 3

    9、复制启动文件

    cp /home/user/openssh/openssh-9.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
    
    • 1

    10、服务自启动

    systemctl enable sshd
    systemctl daemon-reload
    service sshd restart
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    11、验证是否有效
    不要关闭现在的会话框,如果有问题可能会连接不上服务器.新开一个会话框连接该账号密码看看能不能登录

    二、问题
    2.sshd服务重启报错
    (1)报错
    systemctl start sshd 会很快返回,但此时命令行一直等待状态,直到数分钟后出现提示: Job for sshd.service failed because a timeout was exceeded.
    在这里插入图片描述
    (2)问题分析

    单元文件包含单元的指令和行为信息。在后台systemctl命令和单元文件一起工作。为了出色而正确的完成工作,系统管理员必须能够手工编辑单元文件。一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

    sshd单元文件位于/usr/lib/systemd/system/sshd.service 。

    sshd.service 服务启动方式为notify,但sshd 启动时不会发送消息
    在这里插入图片描述
    在这里插入图片描述
    (3)解决方法
    服务启动方式修改为simple(默认方式)后即可正常启动sshd服务,并能够正常进行远程连接
    在这里插入图片描述
    重新加载服务并启动
    在这里插入图片描述
    三、总结
    SSH常识:
    SSH是安全的加密协议,用于远程连接Linux服务器;
    SSH的默认端口是22,安全协议版本是SSH2;
    SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器;
    SSH客户端包含ssh连接命令和远程拷贝scp命令等。

    openssh升级:
    需要先开启trlnet 服务,预防升级失败连接不上服务器;
    然后升级openssl地址,按照步骤设置路径地址;
    最后升级完不要立马关闭会话框,要先验证,预防下次进来的时候进不来;
    验证成功之后,需要关闭telnet服务,因为不安全

  • 相关阅读:
    速览 NFT 期权赛道代表项目与发展前景
    JAVA PowerMock 单元测试
    第六十章 符号概览
    如何写好测试用例
    Java解决鸡兔同笼问题
    常用彩色模型及转换
    Html和Markdown中的空格,       以及   ‌ ‍三种Unicode空格
    鲲鹏devkit编译调试工具——《sudoku》作业解析
    快鲸智慧园区管理系统-提供智慧园区一站式解决方案
    jdiixjxjs
  • 原文地址:https://blog.csdn.net/p393975269/article/details/132918074