Xshell登录CentOS提示Algorithm negotiation fail?别慌,三分钟搞定!

Xshell登录CentOS提示Algorithm negotiation fail修复

刚泡好咖啡,准备远程连服务器,Xshell却啪地弹出一行红字:Algorithm negotiation fail。屏幕瞬间像拉闸,心跳跟着断电。别砸键盘,这毛病年年有人踩,修起来比泡面还快。
先弄清它到底在抱怨什么
SSH握手阶段,客户端与服务端要挑一个两边都认的算法套餐。Xshell默认把老旧算法踢出名单,CentOS如果守着老算法不放,两边就谈崩,于是抛出Algorithm negotiation fail。简单说,语言不通,不是谁坏,只是频道没对上。
一分钟定位:到底是谁“挑食”
打开Xshell会话属性→SSH→安全→算法栏,右侧一排复选框,把加密、密钥交换、MAC、主机密钥四项全点开。如果看到diffie-hellman-group1-sha1、3des-cbc、ssh-rsa等选项被勾掉,而服务器sshd_config里恰好只认这些老家伙,谈判必崩。反过来,服务器若只开了chacha20-poly1305@openssh.com,Xshell老版本不支持,也会翻车。先确认版本:Xshell 7以上自带新算法,CentOS 6默认配置偏老,最容易撞车。
最省事:让服务器说新话

有root权限就改服务端,一劳永逸。登录机房本地终端,或者找同事代敲一行:
vi /etc/ssh/sshd_config
找到三行,如果被注释就解开,没有就追加:
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,diffie-hellman-group14-sha256
HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256
保存后重启sshd:
systemctl restart sshd
再回工位用Xshell连,世界瞬间安静。此法把CentOS拉到现代加密水平,顺带提升安全分。
没权限?改客户端,曲线救国
服务器动不了,就把Xshell拉回老频道。会话属性→SSH→安全→加密、Kex、MAC、主机密钥四项,全部勾选“显示所有算法”,把diffie-hellman-group14-sha256、ssh-rsa、3des-cbc这些老家伙重新打钩。确定保存,重新连接,提示消失。虽然算法旧点,但临时救急够用;事后记得催运维升级服务端。
中间版本冲突?升级就能躺赢
Xshell 6及以下默认不带rsa-sha2-256/512,遇上CentOS 8/9默认禁用ssh-rsa,就会谈崩。直接官网下Xshell 7,安装包一分钟搞定,新会话默认算法齐全,连老系统新系统都不挑。顺带把OpenSSH for Windows也升到8.8以上,防止同一台电脑别的工具也踩坑。
多用户场景:批量改配置不踩雷
公司几十台服务器,一台台改配置会疯。用Ansible一行剧本:
ansible all -m lineinfile -a "path=/etc/ssh/sshd_config regexp='^Ciphers' line='Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com' backup=yes" --become
把KexAlgorithms、HostKeyAlgorithms同样刷进去,最后批量重启sshd,十分钟收工。记得先测开发环境,别一把梭哈把生产搞炸。
云主机被锁?控制台救援通道
部分云厂商默认把串口控制台映射成网页终端,算法再旧也能进。登陆云控制台→找到“远程连接”或“VNC”,进去改完sshd_config,再切回Xshell,省得提工单排队。
常见作死现场,提前避雷
1. 把/etc/ssh/sshconfig和/etc/ssh/sshdconfig搞混,客户端配置改破天也救不了。
2. 改完忘记放行防火墙,新端口没开,以为算法又挂。
3. 手抖删掉HostKey,服务器指纹变,Xshell弹出WARNING,吓得以为又被黑。
4. 为了兼容把group1-sha1重新打开,结果被内网扫描器一秒爆破,得不偿失。
Algorithm negotiation fail就是算法对不上频道,要么让服务器说新话,要么让客户端懂老话,再不行就两边一起升级。三分钟排完,咖啡还没凉。
