centos ssh一键升级到9.8版本脚本

背景

前端时间暴露出ssh漏洞,需要将服务器ssh版本,目前ssh版本最新版为9.8,故在服务器测试,准备将所有服务器ssh版本升级。脚本在centos7.6上亲测可用。
#!/bin/bash
#Author Mr zhang

ECHO_GREEN()
{
  echo -e "\033[32m $1...\033[0m"
}

ECHO_RED()
{
  echo -e "\033[31m $1...\033[0m" 
}
ECHO_PURPLE()
{
  echo -e "\033[35m $1...\033[0m"
}

function InstallLib(){
    yum -y install  gcc wget zlib-devel pam-devel libselinux-devel 
}

function InstallSsl(){
    ECHO_GREEN "start to install ssl"
    yum remove openssl -y 
    wget wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
    tar axf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w && ./config --prefix=/usr
    make && make install
    cd ..
    SslVersion=$(openssl version)
    ECHO_GREEN "ssl : ${SslVersion} install finished!"

}

function InstallSshd(){
    mkdir /home/ssh
    cp /etc/ssh/sshd_config /home/ssh/sshd_config.bak
    cp /etc/pam.d/sshd /home/ssh/sshd.bak
    wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
    # remove origin sshd
    rpm -e --nodeps `rpm -qa | grep openssh`
    rpm -qa openssh
    tar axf openssh-9.8p1.tar.gz
    cd openssh-9.8p1
    ./configure --prefix=/usr/local/openssh9.8p1 --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-selinux --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
    make && make install
    chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
    cd ..
    cp -a ./openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
    chmod u+x /etc/init.d/sshd
    cp /home/ssh/sshd_config.bak /etc/ssh/sshd_config
    cp /home/ssh/sshd.bak /etc/pam.d/sshd
    chkconfig --add sshd
    chkconfig sshd on
    # 去掉注释
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
    sed -i 's/#UseDNS no/UseDNS no/' /etc/ssh/sshd_config
    sed -i '$a\# 在行尾增加",ecdh-sha2-nistp521",以满足ecdsa公钥方式登录(密钥长度521)'  /etc/ssh/sshd_config
    sed -i '$a\KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1'  /etc/ssh/sshd_config
    sed -i '$a\# 增加",ssh-rsa",以满足RSA 登录'  /etc/ssh/sshd_config
    sed -i '$a\HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,ssh-rsa'  /etc/ssh/sshd_config
    sed -i '$a\PubkeyAcceptedKeyTypes ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,ssh-rsa'  /etc/ssh/sshd_config
    systemctl restart sshd


}

UpToVersion="OpenSSH_9.8p1"
#注意:升级前与一台服务器做好免密登陆
CurVersion=$(ssh -V 2>&1 | awk -F "," '{print $1}')
ECHO_GREEN "current ssh version is: ${CurVersion}"
if [[ ${CurVersion} !=  ${UpToVersion} ]];then
    ECHO_GREEN "continue"
    ECHO_GREEN " start to update ,please wait----"
    InstallLib
    InstallSsl
    InstallSshd
    ECHO_GREEN "sshd install success!"
else
    ECHO_GREEN "no need to update"
    ECHO_GREEN "skip"
fi

升级后影响

1.升级ssh过程中需要升级openssl,可能会导致nginx等服务不可用,升级需谨慎,慎重!!

2.可能会导致sftp不可用

解决方法

[root@localhost ~]# find / -name sftp-server
/usr/libexec/sftp-server
#将配置文件sshd Subsystem sftp 修改为上述结果 例如:
[root@localhost ~]# cat /etc/ssh/sshd_config | grep Subsystem 
Subsystem	sftp	/usr/libexec/sftp-server

3.有可能会修改环境变量,导致 /usr/local/bin下的可执行文件不可用
解决方法

#修改/etc/profile 增加
[root@localhost ~]# cat /etc/profile| grep export 
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

相关推荐

  1. centos ssh升级9.8版本脚本

    2024-07-12 03:04:03       20 阅读
  2. 升级 package.json 下所有依赖的版本

    2024-07-12 03:04:03       30 阅读
  3. 如何升级 package.json 下所有依赖的版本

    2024-07-12 03:04:03       38 阅读
  4. Nodejs发布脚本

    2024-07-12 03:04:03       53 阅读
  5. 安装docker脚本

    2024-07-12 03:04:03       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 03:04:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 03:04:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 03:04:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 03:04:03       69 阅读

热门阅读

  1. Kotlin 中 is 关键字的作用与智能类型转换

    2024-07-12 03:04:03       21 阅读
  2. Promise

    2024-07-12 03:04:03       16 阅读
  3. asp .net core 避免请求body数据量过大

    2024-07-12 03:04:03       20 阅读
  4. 社交媒体数据分析:赋能企业营销策略的利器

    2024-07-12 03:04:03       19 阅读
  5. SpringSecurity中文文档(Servlet OAuth2)

    2024-07-12 03:04:03       24 阅读
  6. Docker核心知识手册

    2024-07-12 03:04:03       22 阅读
  7. Linux——测网速例子,在网站查看生成的图片

    2024-07-12 03:04:03       27 阅读
  8. 华为od-C卷200分题目6 - 5G 网络建设

    2024-07-12 03:04:03       22 阅读
  9. python(餐厅点餐系统)

    2024-07-12 03:04:03       24 阅读
  10. 【数理统计】2-随机变量及其概率分布

    2024-07-12 03:04:03       21 阅读
  11. python在区块链领域中的应用

    2024-07-12 03:04:03       17 阅读
  12. AI全新应用设想:畅想智能体和应用软件的结合

    2024-07-12 03:04:03       19 阅读
  13. Android Bitmap

    2024-07-12 03:04:03       21 阅读