分享一个自写自用的openssh自动升级脚本。
此脚本是自己没事写的,算不上好看,但是好用就行。自己在很多不同项目服务器试过,没多大问题。本脚本会先开启telnet,如果你用在有公网IP的机器上,升级完成后一定要关闭xinetd服务,telnet是个不安全的协议。
很多手工的升级方法都让卸载原先的openssl,其实这样有很多问题,有些人在卸载完毕后,并没有做lib库的软连接,导致系统重启直接宕机,或者ssl的版本升高了会导致执行某些命令会有提示。
升级的时候需要自己配置好yum源,如果不配置yum源并且以下(zlib zlib-devel perl perl-devel telnet telnet-server xinetd gcc gcc-c++ pam-devel autoconf libtool)依赖包没有安装的话,会导致升级失败。
这里需要特别注意的是,8.2级以上版本的ssh去除了rsa算法,可能会导致一些低版本的连接工具没有办法连接提示key exchange,解决方法就是在/etc/ssh/sshd_config中添加:
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
或者自己用高版本的xshell或者crt等工具即可。格外注意添加好以后请重启sshd,建议开启telnet然后登陆冲sshd,防止失败带来的意外情况,得不偿失。
请按需使用,用之前明白自己在干啥,由脚本造成的任何意外故障事故等,请使用者自己承担。
下载地址:
https://www.xiaobo.xyz/down/ssh_update-v2.1.tar.gz
使用说明
在使用本脚前,建议检查telnet状态是否能连接。不要过度依赖脚本启动telnet。脚本会有依赖文件检查,不通过可能会使用yum安装依赖包,所以请确保yum源已经配置完毕,并且可用。如果后期需要重新升级openssh,把二进制包解压放入和脚本同级目录,并命名成openssh。重新升级openssl也是,需要解压二进制包并重命名成openssl。脚本运行完成后,目录下面会有很多.c文件,请直接删除即可。
如何运行?
脚本支持centos和redhat版本号为6.7系列。使用前直接解压:
tar xvf ssh_update.tar.gz
cd ssh_update
直接用命令:
sh auto-sshup 或者 ./auto-sshup
PS:使用./方式要确保脚本有可执行权限,如果没有则chmod +x auto-sshup.千万不要在非脚本解压目录下运行脚本,否则.c的文件会生成到当前目录,可能会导致编译失败,或者当前目录文件过多不好清理!!!如果多次执行都是卡在编译过程中请检查当前目录是否有太多无用的.c文件,然后直接删除脚本目录重新解压,重新执行。不行就手工升级。
更新记录
2019-11-03(V1.0)
1.脚本基本框架定型,基本功能完成。
2019-11-28(V1.1)
1.增加了make过程中出错重试的函数。
2.增加了加载动态链接库时配置文件重复的检查。
3.修复了几处语法错误。
2019-12-27(V1.2)
1.增加了CPU核心数检查函数,能够根据主机CPU内核数自动取50%及以下的数量进行编译。
2.部分语法代码修改。
3.优化了make输出的方式
2020-03-08 (V1.3)
1.解决了在部分情况下,/usr/local/目录存在了已经编译的openssl目录时,可能存在的lib库无权限问题
2.优化了部分提示。
2020-03-17 (V1.4)
1.更新到openssh8.2并修改sshd.pam内容。(ssh8.2禁用了一些算法,可能会导致低版本的xshell或者crt登陆不上。请注意。)
2.新增备份原先/etc/pam.d/sshd文件命令。
2020-03-21 (V1.5)
1.新增了语言检查,中文则默认信息输出为中文,其他语言则输出为英文
2.新增关闭selinux功能。
2020-03-27 (V1.6)
1.rpm包检查新增perl和perl-devel包,来解决某些情况下perl-devel包没有安装导致openssl配置失败。
2020-05-06 (V1.7)
1.更换openssl为1.1.1g,来避免openssl的拒绝服务漏洞(CVE-2020-1967)。
2020-06-19 (V1.8)
1.更新到openssh8.3,来避免openssh的属于验证错误漏洞(CVE-2020-12062)。
2020-09-11 (V1.9)
1.修复在kvm虚拟化中CPU类型是kvm64的取核心数量时的错误。
2020-10-12 (V2.0)
1.更新到openssh 8.4。
2021-3-5 (V2.1)
1.更新到openssh 8.5。
2.修改了pam.d中的sshd文件恢复策略,由之前的升级脚本更改,改成直接备份然后恢复主机中原有的sshd文件。
3.新增pam文件夹,预留默认的sshd更改文件。