背景
操作系统:Kylin V10 SP2
目标应用:SSH 9.8P
场景介绍:部署于生产环境的云主机,近期漏扫发现 ssh 版本过低,存在安全隐患,需要升级至安全版本。首先通过 yum 升级,将系统本身的 ssh-8.2p1 升级至官方rpm仓库最新的 ssh-8.2p1-9.p15.ky10.aarch64 版本
yum -y update openssh
复扫,反馈该修复不成功(辣鸡的扫描工具,应该只是单纯的版本匹配),于是准备源码升级,同时源码编译安装了 zlib(版本:zlib-1.3.1) 和 ssl(版本:openssl-3.3.0),SSH源码编译安装很顺利,结果如图所示
尝试通过堡垒机远程访问时,发现连接不上,堡垒机报错显示:Connection reset by peer
排障
1. 登录同网段但尚未进行源码升级的服务器尝试 ssh 访问该主机,输出显示
[root@nginx ~]# ssh root@x.xx.xxx.xxx
....: kex_exchange_identification: read: connection reset by peer
2. 以上信息太过简略,空泛,且无针对性,故加 -v 查看详细输出,输出显示
[root@nginx ~]# ssh -v root@x.xx.xxx.xxx
OpenSSH_9.8p1, OpenSSL 3.3.0 9 Apr 2024
...
debug1: Local version string SSH-2.0-OpenSSH_9.8
debug1: kex_exchange_identification: banner line 0: command-line: line 0: Bad configuration option: GSSAPIKexAlgorithms
kex_exchange_identification: read: Connection reset by peer
Connection reset by x.xx.xxx.xxx port 22
3. 显示该报错是由于 GSSAPIKexAlgorithms 错误设置导致的,故去修改该配置
解决
GSSAPIKexAlgorithms 是用于指定 GSSAPI 的密钥交换算法,红帽指定了系统的加密策略,要取消的话需要在 /etc/sysconfig/sshd 中把 "CRYPTO_POLICY=" 这行的注释取消
取消之后,新编译产生的配置文件中的 /etc/ssh/sshd_config 文件中的 ciphers、MACKexAlgoritms和GSSAPIKexAlgorithms 部分指定的值不会被覆盖,故而解决该问题
再次连接,无论是堡垒机,还是服务器,均可正常连接,问题解决,搞定收工
补充:
某位老哥的博客提示,他还做了以下操作,要是还有问题,有需要的可以参考
在 /etc/ssh/sshd_config 相关 GSSAPIKexAlgorithms 的行注释
在 /etc/crypto-policies/back-ends/openssh.config 相关 GSSAPIKexAlgorithms 的行注释
查看我本地的文件,发现有 /etc/ssh/sshd_config 中对 GSSAPIKexAlgorithms 相关行默认注释