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

相关推荐
OctopusMonster4 分钟前
达梦拷贝DM_HOME的复制安装
linux·运维·服务器·达梦
古猫先生14 分钟前
浅析云场景SSD实时迁移技术
服务器·科技·云计算
筑梦之路1 小时前
CentOS 7 安装fail2ban hostdeny方式封禁ip —— 筑梦之路
linux·运维·centos
敲上瘾2 小时前
动静态库的制作与使用(Linux操作系统)
linux·运维·服务器·c++·系统架构·库文件·动静态库
周山至水数翠峰2 小时前
.net 如何处理网页的Json请求?
服务器·json·.net
bohu836 小时前
亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
linux·opencv·ubuntu·dlib·microros·亚博
贾贾20238 小时前
配电自动化系统“三区四层”数字化架构
运维·科技·架构·自动化·能源·制造·智能硬件
小池先生9 小时前
grafana+prometheus监控linux指标
linux·grafana·prometheus
浮梦终焉9 小时前
【嵌入式】总结——Linux驱动开发(三)
linux·驱动开发·qt·嵌入式
远方 hi10 小时前
linux如何修改密码,要在CentOS 7系统中修改密码
linux·运维·服务器