CentOS7 升级 openssh 到 openssh-8.0p1版本

centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题。

前期请自行配置好yum源(如果不会请百度)

整个过程不需要卸载原先的openssl包和openssh的rpm包。不影响我们的操作

本文的环境都是系统自带的openssh,没有经历过手动编译安装方式。如果之前有手动编译安装过openssh,请参照本文自行测试是否能成功。

如果严格参照本文操作,我保证你升级没问题

centos7.6升级后的效果

[root@testssh ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2r  26 Feb 2019
[root@testssh ~]# openssl version
OpenSSL 1.0.2r  26 Feb 2019
 
[root@testssh ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@linux-node3 ~]#

centos7.3升级后的效果

[root@linux-node3 ~]# openssl version
OpenSSL 1.0.2r  26 Feb 2019
[root@linux-node3 ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2r  26 Feb 2019
[root@linux-node3 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@linux-node3 ~]#

如果ssh版本过低,最好先yum update openssh升级下到目前yum仓库默认的openssh7.4p1版本

默认centos7.3的ssh是如下版本

[root@linux-node3 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@linux-node3 ~]# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
[root@linux-node3 ~]#

执行yum update openssh先升级下(反正官方提供的这种升级是没问题的。如果之前手动编译操作过openssh的升级,变更了默认配置文件路径什么的请自行测试。)

(这里准备统一openssh版本为7.4p1之后再统一编译安装升级到openssh8.0p1)

[root@linux-node3 ~]# yum update openssh -y
[root@linux-node3 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@linux-node3 ~]#

安装telnet-server以及xinetd

[root@linux-node3 ~]# yum install xinetd telnet-server -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
Package 2:xinetd-2.3.15-13.el7.x86_64 already installed and latest version
Package 1:telnet-server-0.17-64.el7.x86_64 already installed and latest version
Nothing to do
[root@linux-node3 ~]#

配置telnet

现在很多centos7版本安装telnet-server以及xinetd之后没有一个叫telnet的配置文件了。

如果下面telnet文件不存在的话,可以跳过这部分的更改

[root@linux-node3 ~]# ll /etc/xinetd.d/telnet
ls: cannot access /etc/xinetd.d/telnet: No such file or directory

如果下面文件存在,请更改配置telnet可以root登录,把disable = yes改成disable = no

[root@rhel yum.repos.d]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
#   unencrypted username/password pairs for authentication.
service telnet
{
    disable = no
    flags       = REUSE
    socket_type = stream       
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
}
 
[root@rhel yum.repos.d]# vim /etc/xinetd.d/telnet
[root@rhel yum.repos.d]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
#   unencrypted username/password pairs for authentication.
service telnet
{
    disable = yes
    flags       = REUSE
    socket_type = stream       
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
}

配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,如下

pts/0
pts/1
pts/2
pts/3

配置之后的显示

[root@linux-node3 ~]# vim /etc/securetty
[root@linux-node3 ~]# tail -5 /etc/securetty
xvc0
pts/0
pts/1
pts/2
pts/3
[root@linux-node3 ~]#

关闭selinux,启动telnet服务,并设置开机自动启动

[root@linux-node3 ~]# setenforce 0 #临时关闭
[root@linux-node3 ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled   重启服务reboot

[root@linux-node3 ~]# systemctl enable xinetd
[root@linux-node3 ~]# systemctl enable telnet.socket
Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
[root@linux-node3 ~]#
 
[root@linux-node3 ~]# systemctl start telnet.socket
[root@linux-node3 ~]# systemctl start xinetd
[root@linux-node3 ~]# netstat -lntp|grep 23
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd          
[root@linux-node3 ~]#

切换到telnet方式登录,以后的操作都在telnet终端下操作,防止ssh连接意外中断造成升级失败

telnet方式登录
在这里插入图片描述

安装依赖包
升级需要几个组件,有些是和编译相关的等

[root@linux-node3 ~]# yum install  -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * epel: mirrors.aliyun.com
     * extras: mirrors.cn99.com
     * updates: mirrors.cn99.com
    Package gcc-4.8.5-36.el7_6.1.x86_64 already installed and latest version
    Package gcc-c++-4.8.5-36.el7_6.1.x86_64 already installed and latest version
    Package glibc-2.17-260.el7_6.4.x86_64 already installed and latest version
    Package 1:make-3.82-23.el7.x86_64 already installed and latest version
    Package autoconf-2.69-11.el7.noarch already installed and latest version
    Package 1:openssl-1.0.2k-16.el7_6.1.x86_64 already installed and latest version
    Package 1:openssl-devel-1.0.2k-16.el7_6.1.x86_64 already installed and latest version
    Package pcre-devel-8.32-17.el7.x86_64 already installed and latest version
    Package pam-devel-1.1.8-22.el7.x86_64 already installed and latest version
    Nothing to do
    [root@linux-node3 ~]#

安装pam和zlib等(后面的升级操作可能没用到pam,安装上也没啥影响,如果不想安装pam请自行测试)

[root@linux-node3 ~]# yum install  -y pam* zlib*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
Package pam_yubico-2.26-1.el7.x86_64 already installed and latest version
Package pam_script-1.1.8-1.el7.x86_64 already installed and latest version
Package pam_oath-2.4.1-9.el7.x86_64 already installed and latest version
Package pam_snapper-0.2.8-4.el7.x86_64 already installed and latest version
Package pam_ssh_agent_auth-0.10.3-2.16.el7.x86_64 already installed and latest version
Package pam_2fa-1.0-1.el7.x86_64 already installed and latest version
Package pam_mapi-0.3.4-1.el7.x86_64 already installed and latest version
Package pam_ssh_user_auth-1.0-1.el7.x86_64 already installed and latest version
Package pam_mount-2.16-5.el7.x86_64 already installed and latest version
Package pam_radius-1.4.0-3.el7.x86_64 already installed and latest version
Package pamtester-0.1.2-4.el7.x86_64 already installed and latest version
Package pam_afs_session-2.6-5.el7.x86_64 already installed and latest version
Package pam_pkcs11-0.6.2-30.el7.x86_64 already installed and latest version
Package pam-1.1.8-22.el7.x86_64 already installed and latest version
Package pam_ssh-2.3-1.el7.x86_64 already installed and latest version
Package 1:pam_url-0.3.3-4.el7.x86_64 already installed and latest version
Package pam_wrapper-1.0.7-2.el7.x86_64 already installed and latest version
Package pam-kwallet-5.5.2-1.el7.x86_64 already installed and latest version
Package pam-devel-1.1.8-22.el7.x86_64 already installed and latest version
Package pam_krb5-2.4.8-6.el7.x86_64 already installed and latest version
Package zlib-devel-1.2.7-18.el7.x86_64 already installed and latest version
Package zlib-static-1.2.7-18.el7.x86_64 already installed and latest version
Package zlib-1.2.7-18.el7.x86_64 already installed and latest version
Package zlib-ada-1.4-0.5.20120830CVS.el7.x86_64 already installed and latest version
Package zlib-ada-devel-1.4-0.5.20120830CVS.el7.x86_64 already installed and latest version
Nothing to do
[root@linux-node3 ~]#

下载openssh包和openssl的包

我们都下载最新版本,下载箭头指的包

 https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/

在这里插入图片描述
https://ftp.openssl.org/source/
在这里插入图片描述

开始安装openssl

[root@linux-node3 ~]# mkdir /data/tools -p
[root@linux-node3 ~]# cd /data/tools/
[root@linux-node3 /data/tools]# rz -E
rz waiting to receive.
[root@linux-node3 /data/tools]# ll
total 5224
-rw-r--r-- 1 root root 5348369 Apr 27 12:19 openssl-1.0.2r.tar.gz

解压文件

[root@linux-node3 /data/tools]# tar xfz openssl-1.0.2r.tar.gz
[root@linux-node3 /data/tools]# ll
total 5228
drwxr-xr-x 20 root root    4096 Apr 27 12:20 openssl-1.0.2r
-rw-r--r--  1 root root 5348369 Apr 27 12:19 openssl-1.0.2r.tar.gz
[root@linux-node3 /data/tools]# cd
[root@linux-node3 ~]#

现在是系统默认的版本,等会升级完毕对比下

[root@linux-node3 ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
[root@linux-node3 ~]#

备份下面2个文件或目录(如果存在的话就执行)

[root@linux-node3 ~]# ll /usr/bin/openssl
-rwxr-xr-x 1 root root 555248 Mar 12 18:12 /usr/bin/openssl
[root@linux-node3 ~]# mv /usr/bin/openssl /usr/bin/openssl_bak
 
[root@linux-node3 ~]# ll /usr/include/openssl
total 1864
-rw-r--r-- 1 root root   6146 Mar 12 18:12 aes.h
-rw-r--r-- 1 root root  63204 Mar 12 18:12 asn1.h
-rw-r--r-- 1 root root  24435 Mar 12 18:12 asn1_mac.h
-rw-r--r-- 1 root root  34475 Mar 12 18:12 asn1t.h
-rw-r--r-- 1 root root  38742 Mar 12 18:12 bio.h
-rw-r--r-- 1 root root   5351 Mar 12 18:12 blowfish.h
......
 
[root@linux-node3 ~]# mv /usr/include/openssl /usr/include/openssl_bak
[root@linux-node3 ~]#

编译安装新版本的openssl

配置、编译、安装3个命令一起执行

&&符号表示前面的执行成功才会执行后面的

[root@linux-node3 ~]# cd /data/tools/openssl-1.0.2r/
 
[root@linux-node3 /data/tools/openssl-1.0.2r]# ./config shared && make && make install

以上命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题
在这里插入图片描述

下面2个文件或者目录做软链接 (刚才前面的步骤mv备份过原来的)

[root@linux-node3 ~]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
[root@linux-node3 ~]# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
[root@linux-node3 ~]# ll /usr/bin/openssl
lrwxrwxrwx 1 root root 26 Apr 27 12:31 /usr/bin/openssl -> /usr/local/ssl/bin/openssl
[root@linux-node3 ~]# ll /usr/include/openssl -ld
lrwxrwxrwx 1 root root 30 Apr 27 12:31 /usr/include/openssl -> /usr/local/ssl/include/openssl
[root@linux-node3 ~]#

命令行执行下面2个命令加载新配置

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
 
/sbin/ldconfig

查看确认版本。没问题

[root@testssh ~]# openssl version
OpenSSL 1.0.2r  26 Feb 2019

安装openssh
上传openssh的tar包并解压

[root@testssh ~]# cd /data/tools/
[root@testssh tools]# ll
total 7628
-rw-r--r--  1 root root 1597697 Apr 18 07:02 openssh-8.0p1.tar.gz
drwxr-xr-x 20 root root    4096 Apr 23 23:12 openssl-1.0.2r
-rw-r--r--  1 root root 5348369 Feb 26 22:34 openssl-1.0.2r.tar.gz
-rwxr-xr-x  1 root root  853040 Apr 11  2018 sshd
[root@testssh tools]# tar xfz openssh-8.0p1.tar.gz
[root@testssh tools]# cd openssh-8.0p1

可能文件默认显示uid和gid数组都是1000,这里重新授权下。不授权可能也不影响安装(请自行测试)

[root@testssh tools]# chown -R root.root /data/tools/openssh-8.0p1

命令行备份原先ssh的配置文件和目录,编译安装出现问题后可以及时回退

然后配置、编译、安装

mv /etc/ssh /etc/ssh_bak
 
./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl   --with-zlib   --with-md5-passwords   --with-pam  && make && make install

安装完毕 检查下结果
在这里插入图片描述

修改配置文件最终为如下内容,其他的不要动

[root@linux-node3 ~]# grep "^PermitRootLogin"  /etc/ssh/sshd_config 
PermitRootLogin yes
[root@linux-node3 ~]# grep  "UseDNS"  /etc/ssh/sshd_config
UseDNS no
[root@linux-node3 ~]#

从原先的解压的包中拷贝一些文件到目标位置(如果目标目录存在就覆盖)

(可能下面的ssh.pam文件都没用到,因为sshd_config配置文件貌似没使用它,请自行测试。我这边是拷贝了)

[root@linux-node3 /data/tools/openssh-8.0p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd
[root@linux-node3 /data/tools/openssh-8.0p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@linux-node3 /data/tools/openssh-8.0p1]# chmod +x /etc/init.d/sshd
 
[root@linux-node3 /data/tools/openssh-8.0p1]# chkconfig --add sshd
[root@linux-node3 /data/tools/openssh-8.0p1]# systemctl enable sshd
[root@linux-node3 /data/tools/openssh-8.0p1]#

把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务

[root@linux-node3 ~]# mv  /usr/lib/systemd/system/sshd.service  /data1
[root@linux-node3 ~]# mv  /usr/lib/systemd/system/sshd.socket  /data2

设置sshd服务开机启动

[root@linux-node3 ~]# chkconfig sshd on
Note: Forwarding request to 'systemctl enable sshd.socket'.
Created symlink from /etc/systemd/system/sockets.target.wants/sshd.socket to /usr/lib/systemd/system/sshd.socket.

接下来测试启停服务。都正常

以后管理sshd通过下面方式了

[root@linux-node3 ~]# /etc/init.d/sshd restart
Restarting sshd (via systemctl):                           [  OK  ]
[root@linux-node3 ~]#
[root@linux-node3 ~]#
[root@linux-node3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      31800/sshd         
tcp6       0      0 :::22                   :::*                    LISTEN      31800/sshd         
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd          
[root@linux-node3 ~]# /etc/init.d/sshd stop
Stopping sshd (via systemctl):                             [  OK  ]
[root@linux-node3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd          
[root@linux-node3 ~]# /etc/init.d/sshd start
Starting sshd (via systemctl):                            [  OK  ]
[root@linux-node3 ~]#
[root@linux-node3 ~]#

使用systemd方式也行

[root@linux-node3 ~]# systemctl stop sshd
[root@linux-node3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd          
[root@linux-node3 ~]# systemctl start sshd
[root@linux-node3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      31958/sshd         
tcp6       0      0 :::22                   :::*                    LISTEN      31958/sshd         
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd          
[root@linux-node3 ~]# systemctl restart sshd
[root@linux-node3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      31999/sshd         
tcp6       0      0 :::22                   :::*                    LISTEN      31999/sshd         
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd          
[root@linux-node3 ~]#

测试版本。都正常

[root@linux-node3 ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2r  26 Feb 2019
[root@linux-node3 ~]#
 
[root@linux-node3 ~]# telnet 127.0.0.1 22
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.0

如果不是生产机器。可以试着重启机器测试下登录sshd是否正常。我这边测试都没问题

测试没问题后可以把telnet服务关闭了

[root@linux-node3 ~]# systemctl disable xinetd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/xinetd.service.
[root@linux-node3 ~]# systemctl stop xinetd.service
[root@linux-node3 ~]# systemctl disable telnet.socket
[root@linux-node3 ~]# systemctl stop telnet.socket
[root@linux-node3 ~]# netstat -lntp

本文转载至:https://www.cnblogs.com/nmap/p/10779658.html ,并对其中错误进行了更正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenSSH 8.0 发布了,此版本缓解了 scp(1) 工具和协议漏洞 CVE-2019-6111,该漏洞此前我们之前报导过:知名文件传输协议 SCP 被曝存在 35 年历史的安全漏洞。 将文件从远程系统复制到本地目录时,SCP 客户端无法验证 SCP 服务器返回的对象是否与请求的东西一致,这使得攻击者可以使用恶意服务器控制的内容创建或破坏本地文件。 OpenSSH 8.0 的缓解措施添加了客户端检查,查看从服务器发送的文件名与命令行请求是否匹配。 SCP 协议已经过时,不灵活且不易修复,OpenSSH 官方建议使用更现代的协议进行文件传输,如 sftp 和 rsync。 此版本新特性包括: ssh(1)、ssh-agent(1)、ssh-add(1):PKCS#11 token 中添加对 ECDSA 密钥的支持。 ssh(1)、sshd(8):基于 Streamlined NTRU Prime 4591^761 和 X25519 的组合,添加实验性量子计算抗性密钥交换方法。 ssh-keygen(1):将默认 RSA 密钥大小增加到 3072 位。 ssh(1):允许“PKCS11Provider = none”覆盖 ssh_config 中 PKCS11Provider 指令的后续实例。 ssh(1):提示是否录制新主机密钥时,输入密钥指纹作为“yes”。 ssh-keygen(1):在单个命令行调用上签名多个证书时,允许自动递增证书序列号。 scp(1)、sftp(1):接受 -J 选项作为 scp 和 sftp 命令行上 ProxyJump 的别名。 ssh-agent(1)、ssh-pkcs11-helper(8)、ssh-add(1):接受“-v”命令行标志以增加输出的详细程度;将详细标志传递给子进程,例如从 ssh-agent 启动的 ssh-pkcs11-helper。 ssh-add(1):添加“-T”选项以允许通过执行签名和验证来测试代理中的密钥是否可用。 sshd(8):在 PAM 环境中暴露 $SSH_CONNECTION。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值