当前位置: 首页 > news >正文

在Linux中进行OpenSSH升级(编译安装在openssh目录)

由于OpenSSH有严重漏洞,因此需要升级OpenSSH到最新版本。

注意:在OpenSSH升级过程中千万不要断开服务器连接,不然的话,会出现断开后连接不了服务器的情况。

第一步,查看当前的OpenSSH服务版本。

命令:ssh -V

 

第二步,下载OpenSSH。

登录网址:OpenSSH: Release Notes下载最新版本OpenSSH安装包,即openssh-9.7p1.tar.gz,然后使用WinSCP将安装包上传到/opt文件夹中。

注意:卸载OpenSSH的rpm安装包之前一定要先把下载的OpenSSH安装包上传到服务器中。

第三步,安装、启动telnet,关闭安全文件,防止因卸载OpenSSH而导致无法登录主机。

# 安装、启动telnet

命令:yum -y install telnet

yum -y install telnet-server

systemctl enable telnet.socket

systemctl start telnet.socket

# 关闭安全文件

命令:mv /etc/security /etc/security.bak

第四步,安装升级OpenSSH需要的依赖包。

命令:yum -y install gcc keyutils-libs rpm-build krb5-devel libcom_err-devel libselinux-devel pam-* openssl-devel pkgconfig vsftpd zlib*

第五步,备份原有的SSH服务版本。

命令:mv /etc/ssh /etc/ssh.bak

mv /usr/bin/ssh /usr/bin/ssh.bak

mv /usr/sbin/sshd /usr/sbin/sshd.bak

第六步,卸载OpenSSH的rpm安装包。

命令:rpm -qa | grep openssh

# 普通删除模式

命令:rpm -e `rpm -qa | grep openssh`

# 如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除

命令:rpm -e `rpm -qa | grep openssh` --nodeps

 

第七步,编译安装OpenSSH。

# 解压OpenSSH

命令:cd /opt

tar zxvf openssh-9.7p1.tar.gz

# 编译安装OpenSSH

命令:cd /opt/openssh-9.7p1/

./configure --prefix=/usr/local/openssh \

--sysconfdir=/etc/ssh \

 --with-ssl-dir=/usr/local/openssl \

--with-zlib=/usr/local/zlib

make && make install

 

第八步,查看OpenSSH命令的执行路径。

命令:find / -name sshd

 

第九步,复制源码解压路径的开机启动脚本到/etc/init.d文件夹下。

命令:cp /opt/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd

第十步,修改开机启动脚本/etc/init.d/sshd。

编辑/etc/init.d/sshd,对开机启动脚本做如下修改:

“SSHD=/usr/sbin/sshd”修改为“SSHD=/usr/local/openssh/sbin/sshd”;

“/usr/bin/ssh-keygen -A”修改为“/usr/local/openssh/bin/ssh-keygen -A”。

也可以使用命令来进行编辑开机启动脚本。

命令:sed -i '25cSSHD=/usr/local/openssh/sbin/sshd' /etc/init.d/sshd

sed -i '41c/usr/local/openssh/bin/ssh-keygen -A' /etc/init.d/sshd

第十一步,修改配置文件sshd_config,允许root用户通过ssh远程登录。

命令:sed -i "/#PermitRootLogin prohibit-password/c\PermitRootLogin yes" /etc/ssh/sshd_config

第十二步,复制源码解压路径的ssh-copy-id文件到文件夹/usr/local/openssh/bin/下,并增加ssh-copy-id文件的执行权限。

命令:cp /opt/openssh-9.7p1/contrib/ssh-copy-id /usr/local/openssh/bin/

chmod +x /opt/openssh-9.7p1/contrib/ssh-copy-id

第十三步,启动sshd服务并验证更新是否成功。

命令:systemctl daemon-reload

service sshd start

/usr/local/openssh/bin/ssh -V

若结果显示“OpenSSH_9.7p1”,则说明OpenSSH升级成功。

 

第十四步,开启安全文件。

命令:mv /etc/security.bak /etc/security

相关文章:

  • C语言系列4——指针与数组(1)
  • 【数据库】 MongoDB 用户分配新的角色和权限
  • 从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx
  • Cannon-es.js之HingeConstraint铰链约束案例
  • leetcode163.缺失的区间,模拟
  • 【算法】堆排之LCR 159.库存管理 Ⅲ(easy)
  • Python Web 与量子计算
  • css的页面布局属性
  • 65.【C语言】联合体
  • Databend 实现高效实时查询:深入解读 Dictionary 功能
  • 对于基础汇编的趣味认识
  • 综合练习 学习案例
  • 【AIGC】ChatGPT提示词助力自媒体内容创作升级
  • 笔记本电脑如何改ip地址:操作指南与注意事项
  • 深度解析:Python蓝桥杯青少组精英赛道与高端题型概览
  • 【译】JS基础算法脚本:字符串结尾
  • (三)从jvm层面了解线程的启动和停止
  • 【笔记】你不知道的JS读书笔记——Promise
  • Apache的基本使用
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CAP 一致性协议及应用解析
  • CSS 提示工具(Tooltip)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java多态
  • Promise面试题,控制异步流程
  • Redis字符串类型内部编码剖析
  • Swift 中的尾递归和蹦床
  • windows-nginx-https-本地配置
  • 搞机器学习要哪些技能
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 新手搭建网站的主要流程
  • 自定义函数
  • #、%和$符号在OGNL表达式中经常出现
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (06)Hive——正则表达式
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (二)linux使用docker容器运行mysql
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Scala的“=”符号简介
  • (转)项目管理杂谈-我所期望的新人
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net生成的类,跨工程调用显示注释
  • ;号自动换行
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @GetMapping和@RequestMapping的区别
  • [ A*实现 ] C++,矩阵地图
  • [ IO.File ] FileSystemWatcher
  • [<MySQL优化总结>]