实验环境

  • OS:CentOS 7.5
  • 当前openssh版本:OpenSSH_7.4p1
  • 升级后的openssh版本:OpenSSH_8.0p1

开通telnet

为了防止升级过程中ssh断连,保险起见,先安装telnet并启动。

安装telnet-servertelnet服务

yum install -y telnet-server* telnet

安装xinetd服务

yum install -y xinetd

启动xinetdtelnet并做开机自启动

systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd.service

修改/etc/securetty文件

默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需向/etc/securetty中追加pts/0等内容,执行命令如下:

echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
echo 'pts/2' >>/etc/securetty

测试telnet能否登录

测试能否通过telnet正常登陆到主机,检查开机自启是否生效(!!!生产环境中不能随意重启主机!!!)。

升级OpenSSH

因为设备一般都是不能通过外网下载文件,并且yum下载的openssh版本都较落后,所以需要通过下载包来编译安装。

备份原先的ssh

cp -r /etc/ssh /etc/ssh.bak`date +%Y%m%d`

准备安装包

OpenSSH_8.0下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz

下载相关依赖包

yum install -y gcc zlib zlib-devel openssl-devel

解压安装

  • 将安装包上传到/usr/local/src
  • 解压
cd /usr/local/src
tar -zxvf openssh-8.0p1.tar.gz
  • 编译安装
cd openssh-8.0p1/
# 需要指定openssh的安装路径
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --without-openssl-header-check --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd
make
  • 卸载旧版本

    make完成后先不着急执行make install,先卸载旧版的openssh;注意:卸载后ssh不能登录,最好不要退出当前终端,否则只能通过telnet登录做配置了。
rpm -e --nodeps `rpm -qa | grep openssh`
  • 执行make install
make install
  • 报错或告警解决

    • 编译安装报依赖包错误

      如果在编译安装的过程中发现有关于依赖包的报错,就通过yum安装相关依赖包
    • 告警信息
[root@kvm /usr/local/src/openssh-8.0p1]# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Tue 2019-05-21 00:05:31 CST; 6s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 12325 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=1/FAILURE)
Main PID: 12325 (code=exited, status=1/FAILURE) May 21 00:05:31 kvm systemd[1]: sshd.service: main process exited, code=exited, status=1/FAILURE
May 21 00:05:31 kvm systemd[1]: Failed to start OpenSSH server daemon.
May 21 00:05:31 kvm systemd[1]: Unit sshd.service entered failed state.
May 21 00:05:31 kvm systemd[1]: sshd.service failed. [root@kvm /usr/local/src/openssh-8.0p1]# systemctl status sshd.service
● sshd.service - SYSV: OpenSSH server daemon
Loaded: loaded (/etc/rc.d/init.d/sshd; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2019-05-21 00:21:06 CST; 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 22813 ExecStart=/etc/rc.d/init.d/sshd start (code=exited, status=1/FAILURE)
Main PID: 22560 (code=exited, status=1/FAILURE) May 21 00:21:06 kvm sshd[22813]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
May 21 00:21:06 kvm sshd[22813]: Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
May 21 00:21:06 kvm sshd[22813]: It is required that your private key files are NOT accessible by others.
May 21 00:21:06 kvm sshd[22813]: This private key will be ignored.
May 21 00:21:06 kvm sshd[22813]: sshd: no hostkeys available -- exiting.
May 21 00:21:06 kvm systemd[1]: sshd.service: control process exited, code=exited status=1
May 21 00:21:06 kvm sshd[22813]: [FAILED]
May 21 00:21:06 kvm systemd[1]: Failed to start SYSV: OpenSSH server daemon.
May 21 00:21:06 kvm systemd[1]: Unit sshd.service entered failed state.
May 21 00:21:06 kvm systemd[1]: sshd.service failed.
[root@kvm /usr/local/src/openssh-8.0p1]# sshd -t
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
sshd: no hostkeys available -- exiting.
[root@kvm /usr/local/src/openssh-8.0p1]#
  • 解决办法

    在执行完make install命令后可能就会有关于key文件的警告信息,这个时候需要将涉及到的key文件的权限改成600,如果没修改,则重启sshd服务时将报错。
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服务
# 复制启动文件到/etc/init.d/下并命名为sshd
cp -p /usr/local/src/openssh-8.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
# 添加执行权限
chmod +x /etc/init.d/sshd
# 添加到开启自启服务中
systemctl enable sshd
/sbin/chkconfig sshd on
# 允许root远程登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
# 配置selinux服务
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# 重启sshd服务
systemctl restart sshd
  • 查看当前ssh版本
[root@kvm ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017
[root@kvm ~]#

收尾工作

重启主机测试ssh是否可用

关闭并disable telnet服务

systemctl disable xinetd
systemctl disable telnet.socket
systemctl stop xinetd.service
systemctl stop telnet.socket

CentOS7.5升级OpenSSH的更多相关文章

  1. centos7.6 升级openssh openssl

    centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题. 前期请自行配置好yum源(如果不会请百度) 整个过程不需要卸载原先的openssl包和openssh的rpm ...

  2. centos7 升级openssh到openssh-8.0p1版本

    环境介绍 centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题. 前期请自行配置好yum源(如果不会请百度) 整个过程不需要卸载原先的openssl包和openss ...

  3. centos7升级openssh

    注意: openssl版本(openssl版本要大于1.0.1,zlib版本要大于1.1.4) 一.安装依赖包 yum -y install gcc make perl # zlib zlib-dev ...

  4. CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门

    最近用低版本的OpenSSH(5.9p1版本) 的漏洞给系统留了个后门 , 可以劫持root密码或者给root开启后门密码 : 利用Openssh后门 劫持root密码 如果公司还在用CentOS6的 ...

  5. CentOS 升级 openSSH

    openSSH作为linux远程连接工具,容易受到攻击,必须更新版本来解决,低版本有如下等漏洞: a. OpenSSH 远程代码执行漏洞(CVE-2016-10009) b.  OpenSSH aut ...

  6. centos6升级openssh至7.9

    1.为了防止升级失败登陆不了,所以需要安装telnet mkdir /root/ssh_updateyum install -y telnet-serveryum install -y xinetd ...

  7. CentOS6、7升级Openssh至7.9

    出于安全考虑,定期使用Nessus对服务器进行扫描,最新Nessus提示服务器的SSH版本有漏洞,所以把SSH升级到最新版本 1.为了防止升级失败登陆不了,所以需要安装telnet mkdir /ro ...

  8. centos7.2升级openssh7.9p1

    Centos7.2版本yum升级openssh版本最高到7.4,想要升级到更高的版本需要重新编译 一.查看当前openssh版本: [root@localhost ~]# ssh -VOpenSSH_ ...

  9. CentOS 升级 openSSH+ sh脚本自动运维

     升级前后对比 openSSH作为linux远程连接工具,容易受到攻击,必须更新版本来解决,低版本有如下等漏洞: OpenSSH 远程代码执行漏洞(CVE-2016-10009) OpenSSH au ...

随机推荐

  1. swiper滑动失效问题

    最近在写移动端的项目,页面有用的是swiper滑动的. 但是会发现在滑动时,不灵活,就是滑动时隐藏的数据会显示,但是不滑动数据又在初始那,隐藏的数据还是看不到. 于是各种排除问题,终于在pc端+移动端 ...

  2. 虚拟机NAT模式连接外网

    虚拟机三种联网方式: 一.NAT(推荐使用)                功能:①可以和外部网络连通    ②可以隔离外部网络 二.桥接模式                        功能:直接 ...

  3. 浅析Thread的join() 方法

    Thread中的 join() 方法在实际开发过程中可能用的不是很多,但是在面试中作为考察基本功知识的扎实与否,经常会被用到.因此,对于 Thread 的 join() 方法进行了一定的研究. 常见的 ...

  4. PAT (Basic Level) Practice (中文)1064 朋友数 (20 分) (set)

    如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号.给定 ...

  5. 今天才知道a标签的href="#"是回到页面顶部

    如题,真的是,做了一年多的开发,今天才知道a标签的href="#"是回到顶部.以前一直以为这是个多么了不起的功能. 顺便扩展一下滑动隐藏和显示按钮(从别处拷贝来的代码) $( do ...

  6. 如果linux开机没有ip怎么办

    1.vim编辑网卡配置文件,修改如下参数 [root@s25linux tmp]# cd /etc/sysconfig/network-scripts/vim修改此文件,找到如下参数,改为yesONB ...

  7. 记PHP使用rtrim()导致获得的数据乱码问题

    一.问题描述: 我用rtrim()函数去除右侧多余的"."号,去除之后,发现乱码. 二.出现原因: 当右侧没有分号,要去除的字符串的十六进制又刚刚好以81结尾,就导致81被去除,从 ...

  8. vue.js中用npm安装vue-router时报错处理办法

    当在使用npm安装东西的时候,最怕遇到的就是,电脑并不想和你说话,只向你抛出一大堆错误...比如在vue.js中用npm安装vue-router的时候,我就遇到 一脸蒙逼的我默默的念了一句:卧..槽. ...

  9. 前端开发 css、less编写规范

    壹 ❀ 引 早在大半年前,我在负责整理定义了前端组JavaScript开发规范与less.css样式开发规范.一直想将两个规范整理成文章,但在整理了JavaScript规范后,我花了较多的时间在学习J ...

  10. centos7 配置mailx使用外部smtp发送外网邮件

    1- 安装 1.1- 安装mailx yum install mailx -y 2- 配置 2.1- 配置外部发件邮箱 vim /etc/mail.rc 在最后加上: //如果不存在,则编辑/etc/ ...