安装Telnet服务

为了避免升级OpenSSH导致服务器不可连接。需要先下载安装Telnet组件。升级期间使用Telnet作为升级期间的服务器连接方式。

  1. 先查询telnet是否安装

    rpm -qa telnet
  2. 如果没有安装则执行以下语句安装

    yum -y install telnet
  3. 查询telnet-server是否安装

    rpm -qa telnet-server
  4. 如果没有安装则执行以下语句安装

    yum -y install telnet-server
  5. 防火墙状态放行telent

    firewall-cmd --permanent --add-port=23/tcp --zone=public
  6. 防火墙重新载入

    firewall-cmd --reload
  7. 启用Telnet服务开机启动

    systemctl enable telnet.socket
  8. 启动Telnet服务

    systemctl start telnet.socket

*注意:

  • 若防火墙是已经禁用。请略过防火墙相关命令
  • 若防火墙是暂时停止。建议先启动防火墙,添加访问策略!否则重装过程需要服务器重启,重启后可能因为防火墙原因无法通过telnet访问服务器。如果OpenSSH又安装失败,将导致服务器不可连接。附:防火墙启动命令 systemctl start firewalld

创建使用Telnet服务的账户

因为默认情况root 不能直接登录telnet

创建一个新用户用于登录elnet服务,这个账号升级完成后需要进行删除。

  1. 创建账号

    sudo useradd tempuser
  2. 设置密码

    sudo passwd tempuser

    输入一个密码,例如:Mycar=998

    后续访问的时候,通过XShell工具连接

    先用tempuser登录后,再使用

    su root

    切换到root用户。

升级OpenSSH

以下命令是使用Telnet连接后,切换到root账户进行操作。

  1. 安装相关命令依赖

    yum install -y rpm-build gcc gcc-c++ glibc glibc-devel openssl-devel openssl pcre-devel zlib zlib-devel make wget krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts libXt-devel imake gtk2-devel lrzsz
  2. 备份原SSH配置

    cp -rp /etc/ssh /etc/ssh.bak
  3. 停止SSH服务

    systemctl stop sshd
  4. 查看安装的ssh

    rpm -qa | grep openssh
  5. 卸载rpm安装的ssh

    yum remove -y openssh*
  6. 创建制作rpm相关目录

    mkdir -pv /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
  7. 下载openssh和x11-ssh-askpass安装包

    cd /root/rpmbuild/SOURCES/

    wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz

    tar -xf openssh-9.3p1.tar.gz

    wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz
  8. 编辑编译配置文件

    cp openssh-9.3p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/

    cd /root/rpmbuild/SPECS/

    不生产ask包

    sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" openssh.spec

    sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" openssh.spec

    修改openssl-devel的报错

    sed -i '/openssl-devel < 1.1/s/^/#/' openssh.spec

    修改PreReq的报错

    sed -i '/PreReq:/s/^/#/' openssh.spec
  9. 编译文件

    rpmbuild -ba openssh.spec

    运行后,/root/rpmbuild/RPMS/x86_64/目录应该有openssh-9.3p1-1.el7.x86_64.rpm、openssh-debuginfo-9.3p1-1.el7.x86_64.rpm、openssh-clients-9.3p1-1.el7.x86_64.rpm、openssh-server-9.3p1-1.el7.x86_64.rpm四个文件。
  10. 升级OpenSSH

    cd /root/rpmbuild/RPMS/x86_64/

    yum localinstall openssh-9.3p1-1.el7.x86_64.rpm openssh-clients-9.3p1-1.el7.x86_64.rpm openssh-server-9.3p1-1.el7.x86_64.rpm -y
  11. 验证OpenSSH是否升级成功

    修改文件权限

    chmod 600 /etc/ssh/ssh_host_rsa_key

    chmod 600 /etc/ssh/ssh_host_ecdsa_key

    chmod 600 /etc/ssh/ssh_host_ed25519_key

    检查是否有配置错误

    sshd -t

    如果/etc/pam.d/sshd配置丢失,从其他机器拷贝一份配置过来

    注释掉/etc/pam.d/password-auth /etc/pam.d/system-auth中uid >= 1000的行,否则root不能登陆

    sed -i '/uid < 1000/s/^/#/' /etc/pam.d/password-auth

    sed -i '/uid < 1000/s/^/#/' /etc/pam.d/system-auth

    修改/etc/ssh/sshd_config

    sed -i '/^#PermitRootLogin yes/s/^#//' /etc/ssh/sshd_config

    重启sshd服务

    systemctl restart sshd

    添加到自启动

    chkconfig --add sshd

查看升级后的ssh版本

重新使用SSH连接后,查看SSH版本

ssh -V

看到对应的版本为正常

如果有条件,建议重启服务器一下看SSH是否能正常登录。

关闭Telnet服务

  1. 停止Telnet 服务

    systemctl stop telnet.socket
  2. 禁用Telnet服务开机启动

    systemctl disable telnet.socket

删除临时用户

  1. 使用命令删除临时用户

    userdel -rf tempuser

清理临时目录

  1. 使用命令删除临时目录

    rm ~/rpmbuild/ -rf

可能遇到的其他问题

  1. 编译安装过程提示:Protected multilib versions: zlib-1.2.7-20.el7_9.x86_64 != zlib-1.2.7-19.el7_9.i686

    执行如下命令:

    yum install -y zlib zlib-devel --setopt=protected_multilib=false

  2. 编译安装过程提示:configure: error: PAM headers not found

    执行如下命令:

    yum -y install pam-devel

  3. 升级完成后,所有账号(含非root账号)都无法登录,提示:Access denied

    执行如下命令:

    setenforce 0

    如果这个命令可以临时解决。请修改/etc/selinux/config文件,设置SELINUX=disabled

  4. 升级完成后,root账号无法登录,提示:Access denied,但是其他一般账户可以登录

    执行如下命令:

    vim /etc/ssh/sshd_config

    确保配置值为:PermitRootLogin yes

原文链接:https://www.cnblogs.com/cynriczgc/p/17255368.html

附:OpenSSH 9.3p1升级到9.3p2 ,亲测可用。

https://blog.csdn.net/liu_chen_yang/article/details/133460539

OpenSSH9.3p1升级实践的更多相关文章

  1. QQ会员AMS平台PHP7升级实践

    作者:徐汉彬链接:https://zhuanlan.zhihu.com/p/21493018来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. QQ会员活动运营平台(AMS ...

  2. 日请求亿级的 QQ 会员 AMS 平台 PHP7 升级实践

    QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统.AMS是一个主要采用PHP语言实现的活动运营平台, CGI日请求3亿左右,高峰期达到8亿.然而,在之 ...

  3. 升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践

    升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践 日请求过亿:QQ会员活动平台PHP7升级实践http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4 ...

  4. 日请求亿级的QQ会员AMS平台PHP7升级实践

    版权声明:本文由PHP7升级项目组原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/74 来源:腾云阁 https://www ...

  5. 手机淘宝轻店业务 Serverless 研发模式升级实践

    一.前言 随着 Serverless 在业界各云平台落地,阿里内部 Serverless 研发平台.各种研发模式也在业务中逐步落地,如火如荼.在此契机下,淘系团队启动了轻店 Serverless 研发 ...

  6. Elasticsearch1.7到2.3升级实践总结

    概括 简述 升级分为Elasticsearch server升级和Elasticsearch client api升级 为什么要迁移 当前团队内多个业务方公用一套ES集群,容易被影响,重要业务应该独自 ...

  7. 读“日请求亿级的QQ会员AMS平台PHP7升级实践”博客心得笔记

    PHP7版本尚未普及,对于前辈们为了性能提升有勇气探索新技术敢于尝螃蟹的精神十分敬佩,倍受鼓舞. PHP7升级面临的风险和挑战 对于一个已经现网在线的大型公共Web服务来说,基础公共软件升级,通常是一 ...

  8. 经典文摘:饿了么的 PWA 升级实践(结合Vue.js)

    自 Vue.js 官方推特第一次公开到现在,我们就一直在进行着将饿了么移动端网站升级为 Progressive Web App 的工作.直到近日在 Google I/O 2017 上登台亮相,才终于算 ...

  9. Kubernetes 集群无损升级实践 转至元数据结尾

    一.背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏.高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可 ...

  10. 升级到 PHP-7 遇到的坑 及 经验分享

    注意:上面这张图是QQ群网友分享的,图中提到的“被移除的函数”,call_user_func 和 call_user_func_array 在 PHP-7.0 的正式版中是可用的,也许是当时的 测试版 ...

随机推荐

  1. 瑞芯微rk356x板子快速上手

    @ 目录 rk3568 CPU GPU NPU VPU 一.编译环境要求 二.编译前准备 0)开发板型号 1)安装第三方编译工具 2)设置adb路径 3)安装USB驱动DriverAssitant_v ...

  2. Atcoder ABC364 D-F

    Atcoder ABC364 D-F D - K-th Nearest 链接: D - K-th Nearest (atcoder.jp) 简要题意: 问题陈述 在一条数线上有 \(N+Q\) 个点 ...

  3. [rCore学习笔记 025]分时多任务系统与抢占式调度

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本节重 ...

  4. MFC 静态拆分视图窗口

    今天学习了MFC中拆分窗口,现将方法记录下. 想要在窗口视图中拆分成左右两个视图窗口,首先要注意的是拆分后要加载到左右的视图要符合动态创建的类, 也就是要在自己创建的视图类中添加动态创建机制宏. 类内 ...

  5. “java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag”解决方法

    在运行jsp项目的时候出现了这个java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag报错,一直尝试更换jar文件等也没 ...

  6. python项目生成exe

    前言 做了个python的小项目,需要打包为桌面端的exe使用,结果一打包,体积直接上百兆了,研究了下,使用虚拟环境打出的包会更干净小巧. 安装anaconda anaconda用作python的虚拟 ...

  7. 淘宝api接口,淘宝开放平台api接口

    目前淘宝开放平台是暂停入驻的,正常情况来说,用这个接口的人是为了打单发货,但是由于淘宝暂停入驻,所以大家也无法接入了. 目前本人手头有很早申请好的可以使用的接口,可以用于以下用途: 1.淘宝订单打单发 ...

  8. 【YashanDB知识库】主备延迟故障分析方法

    [标题]主备延迟故障分析方法 [问题分类]故障分析 [关键字]Yashandb.主备延迟 [问题描述]当数据库备机出现回放延迟时,需要通过一些手段分析延迟的原因.通过数据库的系统视图或操作系统监控数据 ...

  9. 苹果(ios)打包证书下载

    这里,首先需要明确的是,苹果打包证书不能共用,因此证书下载是只能下载自己的证书,不是去下载别人的证书. 那么自己的证书又是如何生成的呢?去什么地方下载呢?第一次开发ios的同学们,肯定会问这个问题. ...

  10. C++ : 如何用C语言实现C++的虚函数机制?

    前言 在 googletest的源码中,看到gtest-matchers.h 中实现的MatcherBase 类自定义了一个 VTable,这种设计实现了一种类似于C++虚函数的机制.C++中的虚函数 ...