文章

CentOS7升级Openssh

1.安装telnet服务

防止openssh升级过程中出现问题导致服务器无法连接

1.1 查看是否安装telnet服务

rpm -qa | grep telnet-server

如果没有则安装telnet服务

yum install -y xinetd telnet telnet-server

1.2 启动telnet

systemctl start telnet.socket
systemctl start xinetd
systemctl enable telnet.socket
systemctl enable xinetd
systemctl status telnet.socket

1.3 添加防火墙规则

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

1.4 新增一个普通用户

用普通用户登录telnet,然后su - root切换到root用户

useradd xxy
passwd xxy

openssh升级完成后关闭telnet服务,参照开启服务的方式

2.安装openssl

2.1 下载

wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz --no-check-certificate

2.2 解压安装

#安装依赖
yum -y install gcc
mkdir /usr/local/openssl
#进入解压后openssl文件夹
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
make install
ldconfig
#备份原来的openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
#新建新的openssl
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
#调整库路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl.conf
ldconfig
#查看版本
openssl version

3.升级openssh

3.1.备份原有ssh

cp -r  /etc/ssh   /etc/ssh_bak
cp -r  /etc/pam.d /etc/pam.d_bak
cp -r /etc/init.d/sshd /etc/init.d/sshd_bak
cp  /usr/bin/ssh /usr/bin/ssh_bak
cp /usr/sbin/sshd /usr/sbin/sshd_bak

3.2.下载新版openssh

wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz --no-check-certificate

3.3.卸载老版本openssh

  1. 查看老版本安装
    rpm -qa |grep openssh
    
  2. 使用rpm -e --nodeps删除安装

3.4.安装openssh

  1. 创建安装文件夹并解压安装文件

    mkdir /usr/local/openssh
    #解压进入解压文件夹
    tar -zxvf openssh-9.5p1.tar.gz
    cd openssh-9.5p1
    
  2. 编译和安装

    过程中可能会提示缺少相关依赖,通过yum安装即可

    #安装依赖
    yum -y install pam-devel gcc zlib zlib-devel openssl-devel
    #编译安装 
    ./configure --prefix=/usr/local/openssh/ --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd --with-ssl-dir=/usr/local/openssl
    make
    make install
    
  3. 拷贝文件

    cp -p contrib/redhat/sshd.init /etc/init.d/sshd
    chmod +x /etc/init.d/sshd
    chkconfig --add sshd
    cp sshd_config /etc/ssh/sshd_config
    cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
    cp /usr/local/openssh/libexec/sftp-server /usr/libexec/
    cp /usr/local/openssh/bin/* /usr/bin/
    cp /etc/pam.d_bak/sshd /etc/pam.d/
    
  4. 修改配置文件

    vim /etc/ssh/sshd_config
    #修改以下配置:
    PasswordAuthentication yes
    PermitRootLogin yes
    UsePAM yes
    
  5. 替换key文件

    #执行以下两个命令:提示是否覆盖按“y”,后面直接回车就好
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
    #修改权限
    chmod 600 /etc/ssh/ssh_host_ecdsa_key
    chmod 600 /etc/ssh/ssh_host_rsa_key
    
  6. 启动sshd服务,查看ssh版本

    systemctl daemon-reload
    systemctl start sshd
    
License:  CC BY 4.0