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

相关推荐
Rockbean1 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪1 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩2 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
海天鹰2 天前
【免费】PHP主机=域名+解析+主机
服务器