Centos7升级OpenSSH到OpenSSH_8.0p1版本

系统环境

CentOS Linux release 7.6.1810 (Core)
OpenSSH_7.9p1, OpenSSL 1.0.2k-fips 26 Jan 2017

升级准备

  1. 在打开ssh连接工具(如xshell)的同时打开文件传输工具(如xftp)。因为升级过程不能创建新的连接,以备手动上传文件需要。

  2. 将要升级的软件包预先下载好,如本次的openssl-1.1.1c.tar.gzopenssh-8.0p1.tar.gz。待升级完成后删除即可。

    Openssl: https://ftp.openssl.org/source/
    任意进入一个个人目录,使用wget下载:

    cd /tmp
    wget https://ftp.openssl.org/source/openssl-1.1.1c.tar.gz
    

    Openssh: https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
    任意进入一个个人目录,使用wget下载:

    cd /tmp
    wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz
    

注意事项

/usr/lib64目录下的libssl.so.1.0.2klibcrypto.so.1.0.2k进行备份。在升级openssl过程中着两个文件会被删除,导致yum、wget、ping等诸多命令不能使用。

cd /usr/lib64
cp libssl.so.1.0.2k /bak #/bak为备份目录
cp libcrypto.so.1.0.2k /bak

关闭selinux

临时关闭:setenforce 0 # 采用临时关闭即可
永久关闭:vi /etc/sysconfig/selinux
SELINUX=enforcing改为 SELINUX=disabled
重启服务 reboot

关闭防火墙

防火墙相关操作

  • 查看防火墙状态:firewall-cmd –state
  • 开启防火墙:
    firewall-cmd –reload  #重载配置,不会断开已有tcp会话。推荐使用
    systemctl restart firewalld  #重启服务,会断开已有tcp会话。不推荐
    
  • 停止防火墙:systemctl stop firewalld.service #建议升级过程中关闭
  • 禁止开机启动:systemctl disable firewalld.service
  • 开放指定端口(22为例):firewall-cmd --permanent --add-port=22/tcp

安装telnet

ssh不能登录时的备用登录方案

  1. 安装:yum install xinetd telnet-server -y
  2. 配置telnet
    vi /etc/xinetd.d/telnet输入以下内容
    # default: on
    # description: The telnet server serves telnet sessions; it uses \
    #   unencrypted username/password pairs for authentication.
    service telnet
    {
    	# if allow root login, disable = yes
    	disable = no
    	flags       = REUSE
    	socket_type = stream
    	wait        = no
    	user        = root
    	server      = /usr/sbin/in.telnetd
    	log_on_failure  += USERID
    }
    
  3. 配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,如下
    pts/0
    pts/1
    pts/2
    pts/3
    
  4. 启动telnet服务
    systemctl enable xinetd
    systemctl enable telnet.socket
    Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
    systemctl start telnet.socket
    systemctl start xinetd
    netstat -lntp|grep 23
    tcp6 0 0 :::23 :::* LISTEN 1/systemd     
    

安装依赖包(后面升级需要)

yum install  -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel 
yum install  -y pam* zlib*

升级openssl

cd /tmp
tar -zxvf openssl-1.1.1c.tar.gz
cd penssl-1.1.1c
./config --prefix=/usr/local/openssl #如果此步骤报错,需要安装perl以及gcc包
echo $?  #查看上一步命令是否报错
0
make
echo $?  #查看上一步命令是否报错
0
make install
echo $?  #查看上一步命令是否报错
0
mv /usr/bin/openssl /usr/bin/openssl.bak #备份
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl  #创建软连接
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf #写入 openssl 库文件的搜索路径
ldconfig -v                    #设置/etc/ld.so.conf生效
openssl version
OpenSSL 1.1.1c  28 May 2019

升级openssh

  1. 安装
    cp -r /etc/ssh /etc/ssh.bak #备份
    cd /tmp
    tar -zxvf openssh-8.0p1.tar.gz
    cd openssh-8.0p1
    ./configure --prefix=/usr --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl   --with-zlib   --with-md5-passwords   --with-pam  #注意参数的路径
    echo $?  #查看上一步命令是否报错
    0
    make && make install
    echo $?  #查看上一步命令是否报错
    0
    
  2. 配置
    vi /etc/ssh/sshd_config
    修改为以下内容
    PasswordAuthentication yes
    UseDNS no
    
    cd /tmp/openssh-8.0p1
    mv /etc/init.d/sshd /etc/init.d/sshd.bak #备份
    cp -a contrib/redhat/sshd.init /etc/init.d/sshd  #使用新版本的执行文件
    cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam #不存在就不管
    sudo chmod +x /etc/init.d/sshd  #添加执行权限,非root用户安装时需要
    chkconfig --add sshd #将sshd服务设置为开机启动
    systemctl enable sshd  #允许sshd服务自启动
    mv  /usr/lib/systemd/system/sshd.service  /tmp #删除或移除原来sshd文件。否则影响sshd服务重启
    systemctl restart sshd  #重启ssh服务。(修改服务配置后都需重启,使配置生效)
    
    #一些内容为可选
    #修改默认端口
    vi /etc/ssh/sshd_config
    将Port 修改为其他端口,如2222
    firewall-cmd --permanent --add-port=2222/tcp #防火墙开放2222端口
    firewall-cmd –reload #重启防火墙
    
  3. 验证
    chkconfig sshd on  #查看服务运行级别
    
    #验证是否正常启动
    /etc/init.d/sshd restart  
    /etc/init.d/sshd stop
    /etc/init.d/sshd start
    
    systemctl restart sshd
    systemctl stop sshd
    systemctl start sshd
    
    netstat -lntp  #查看sshd服务是否启动以及监听的端口(默认22)
    ssh -V
    OpenSSH_8.0p1, OpenSSL 1.1.1c  28 May 2019
    

修复升级带来的问题

  1. error while loading shared libraries: libssl.so.10: cannot open shared。由于libssl.so 、libcrypto.so 等库文件缺失,导致yum、ping、wget不能使用
    cd /usr/lib64
    cp /u01/libssl.so.1.0.2k ./
    cp /u01/libcrypto.so.1.0.2k ./
    ln -s libssl.so.1.0.2k ./libssl.so  #创建软连接
    ln -s libssl.so.1.0.2k ./libssl.so.10
    ln -s libcrypto.so.1.0.2k ./libcrypto.so
    ln -s libcrypto.so.1.0.2k ./libcrypto.so.10
    

恢复升级之外的临时配置

  1. 关闭telnet
    确保重新使用ssh登录没问题后,关闭telnet服务。
    systemctl disable xinetd.service
    Removed symlink /etc/systemd/system/multi-user.target.wants/xinetd.service.
    systemctl stop xinetd.service
    systemctl disable telnet.socket
    systemctl stop telnet.socket
    
    #查看telnet服务是否关闭,任选其一
    netstat -lntp #查看23端口是否被监听
    netstat -antp #查看23端口是否被监听
    chkconfig –list #没有telnet出现即可
    
  2. 恢复防火墙为初始状态
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值