CentOS7-升级OpenSSH

CentOS7-升级OpenSSH

安装前须知的命令说明

systemctl 如何启动、关闭、启用/禁用服务

启动服务:systemctl start xxx.service

关闭服务:systemctl stop xxx.service

重启服务:systemctl restart xxx.service

显示服务的状态:systemctl status xxx.service

在开机时启用服务:systemctl enable xxx.service

在开机时禁用服务:systemctl disable xxx.service

查看服务是否开机启动:systemctl is-enabled xxx.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

1.准备好安装需要的包

下载openssh包和openssl的包(友情提示:迅雷下载会快哦)

openssh版本openssh-xxx.tar.gz:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/

openssl版本openssl-xxx.tar.gz:https://ftp.openssl.org/source/

注意:openssh和openssl版本对应关系请自行搜索

我这里用的是:

openssh-8.3p1.tar.gz

openssl-1.1.1g.tar.gz

2.解压

# tar xfz openssh-8.3p1.tar.gz

# tar xfz openssl-1.1.1g.tar.gz

3.安装依赖包

升级需要几个组件,有些是和编译相关的等

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

安装pam和zlib等

# yum install  -y pam* zlib*

4.安装telnet

为防止openssh升级失败。所以安装telnet。保证openssh升级失败也可以通过telnet连接服务器,进行恢复操作。并不用去机房。

# yum install -y telnet-server

# yum install -y xinetd

# systemctl start telnet.socket

# systemctl start  xinetd

建议开启telnet和xinetd开机自动启动,避免reboot后连不上Telnet

# systemctl enable xinetd.service

# systemctl enable telnet.socket

CentOS 7 采用了 firewalld 防火墙,查询是否开启23端口

# firewall-cmd --query-port=23/tcp

显示23端口没有开启使用下面命令开启23端口

# firewall-cmd --zone=public --add-port=23/tcp --permanent

重新加载firewall-cmd

# firewall-cmd --complete-reload

重新查询23端口是否开放

# firewall-cmd --query-port=23/tcp

验证telnet

使用远程telnet连接验证

5.安装openssl

  备份

  # mv /usr/bin/openssl /usr/bin/openssl_bak

  # mv /usr/include/openssl /usr/include/openssl_bak

  编译安装

  # cd openssl-1.1.1g

  # ./config --prefix=/usr/local/openssl  --shared 

  # make && make  install

  命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题

  # echo $?

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

  # ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

  # ln -s /usr/local/openssl/include/openssl /usr/include/openssl

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

  # echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

  # /sbin/ldconfig

  查看确认版本。

  # openssl version

6.安装openssh

  安装前须知

  需要把selinux关闭,使用命令getenforce查看selinux状态,Enforcing为开启,Permissive为关闭

  # getenforce


  临时关闭selinux

  setenforce 0


  永久关闭selinux,需要重启服务器

  vi /etc/selinux/config

  将SELINUX=enforcing改为SELINUX=disabled


  注:友情提示,不关闭selinux会出bug的


  卸载旧的ssh

  # cp -r /etc/ssh /etc/ssh.old #备份一些之前的文件

  # rpm -qa|grep openssh

  # rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64 (版本可能不一样,以实际为主)

  # rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64 (版本可能不一样,以实际为主)

  # rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64 (版本可能不一样,以实际为主)

  # rpm -qa|grep openssh


  连接到其他计算机时,OpenSSH作为两个进程运行。第一个进程是特权进程,并根据需要控制权限  的颁发。第二个进程与网络通信。设置适当的环境需要额外的安装步骤,这些步骤通过以root用户身份发出以下命令来执行 :

  # install -v -m700 -d /var/lib/sshd

  # chown -v root:sys /var/lib/sshd

  # groupadd -g 50 sshd

  # useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd

  编译

  # cd openssh-8.3p1

  # ./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  && make

  修改相应文件权限

  # chmod 600 /etc/ssh/ssh_host_rsa_key

  # chmod 600 /etc/ssh/ssh_host_ecdsa_key

  # chmod 600 /etc/ssh/ssh_host_ed25519_key

  安装

  # make install

  安装完毕 检查下结果

  # echo $?

  配置

  # install -v -m755 contrib/ssh-copy-id /usr/bin

  # install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1

  # install -v -m755 -d /usr/share/doc/openssh-8.3p1

  # install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-8.3p1

  修改sshd_config,最下面添加如下几个配置:

  # vi /etc/ssh/sshd_config

  UsePAM no

  UseDNS no

  PasswordAuthentication yes

  PubkeyAuthentication yes

  配置启动设置和开机启动

    # cp -p contrib/redhat/sshd.init /etc/init.d/sshd

    # cp -p contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

    # chmod +x /etc/init.d/sshd

    # chkconfig --add sshd

    # chkconfig sshd on

    # chkconfig --list sshd

    # systemctl restart sshd


  验证ssh

  # ssh -V

7.关闭telnet服务

# systemctl disable xinetd.service

# systemctl disable telnet.socket

# systemctl stop xinetd.service

# systemctl stop telnet.socket

8.回滚操作

如果之前是rpm包安装的。并且按照以上步骤操作,可以直接以下命令进行回滚

# yum -y install openssh-clients

# yum -y install openssh-server

# yum -y install openssh

9.文档有用的话记得点个赞哦-.-,有什么问题也可以下方评论

参考

https://www.jianshu.com/p/220f7fd908b0

https://blog.csdn.net/popboy126/article/details/107247527

https://www.cnblogs.com/activiti/p/7552677.html (selinux 相关操作)

https://blog.csdn.net/sdd220/article/details/78296219 (CentOS7-开启端口)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。