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

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

1、准备工作

查询SSH版本

powershell 复制代码
ssh -V

进入/usr/local/目录

powershell 复制代码
 cd /usr/local/
 mkdir openssh
 cd openssh/

2、备份原SSH

powershell 复制代码
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/

4、编译校验

powershell 复制代码
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening`

执行完成如图

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

powershell 复制代码
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

5、编译安装

powershell 复制代码
make && make install

编译成功如图

6、复制到全局使用

powershell 复制代码
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

7、查看版本

8、修改配置信息并重启

powershell 复制代码
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config

9、复制启动文件

powershell 复制代码
cp /home/user/openssh/openssh-9.0p1/contrib/redhat/sshd.init /etc/init.d/sshd

10、服务自启动

powershell 复制代码
systemctl enable sshd
systemctl daemon-reload
service sshd restart

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服务,因为不安全

相关推荐
贝锐3 分钟前
多窗口同时远控提效,向日葵助力企业应对批量运维难题
运维·远程控制
微露清风6 分钟前
系统性学习Linux-第四讲-进程控制
linux·服务器·学习
不脱发的程序猿6 分钟前
嵌入式Linux:阻塞式I/O与非阻塞式I/O
linux·服务器·单片机·嵌入式硬件·嵌入式
Qt程序员20 分钟前
基于 C++ 实现自定义字符串 string 类
linux·c++·容器·指针·内存管理·运算符重载
双层吉士憨包1 小时前
Google Voice保号教程
大数据·服务器·人工智能
fengyehongWorld1 小时前
docker 常用命令
运维·docker·容器
赛博云推-Twitter热门霸屏工具1 小时前
推特自动化营销软件有哪些?2026最新推荐
运维·自动化
从零点1 小时前
认识Linux和mpu开发板之间的联系
linux
牛十二1 小时前
Ubuntu 虚拟机安装完全免费的网易有道龙虾实战流程
linux·运维·ubuntu
yangyanping201081 小时前
Linux学习三之 清空 nohup.out 文件
linux·chrome·学习