Xshell连接时报错“服务器发送了一个意外的数据包。received:3,expected:20”

问题原因:所用Xshell和VM不兼容

解决方案:改用finallshell终端连接

### 3.1 问题分析 在使用 Xshell 连接服务器,出现“Received 3, Expected 20”的错误提示,通常表示客户端与服务器在 SSH 协议的密钥交换(KEX)阶段出现了不兼容的情况。SSH 协议在建立连接会进行多个阶段的握手,其中 KEX 阶段用于协商加密参数。如果客户端与服务端支持的算法不匹配,就会导致连接中断,并出现此类错误信息[^1]。 ### 3.2 修改 SSH 服务端配置 OpenSSH 服务端的配置文件 `sshd_config` 中可以通过 `KexAlgorithms` 参数指定支持的密钥交换算法。某些服务器在升级 OpenSSH 或使用较新版本后,默认配置可能不包含旧版兼容算法,导致 Xshell 无法完成密钥交换。可以在服务端配置文件中添加以下内容以启用兼容算法: ```ini KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 ``` 配置完成后,重启 SSH 服务以使修改生效: ```bash systemctl restart sshd ``` 重启后可以使用以下命令验证服务状态: ```bash systemctl status sshd ``` ### 3.3 配置 Xshell 客户端 在 Xshell连接设置中,也可以手动指定使用的密钥交换算法。进入连接属性中的“SSH > Kex”选项卡,尝试选择如下算法组合: - Key Exchange: `diffie-hellman-group1-sha1` - Host Key: `ssh-rsa` - Cipher: `aes128-cbc` - MAC: `hmac-sha1` 通过限制客户端使用的算法,使其与服务端支持的算法匹配,可以解决兼容性问题[^3]。 ### 3.4 检查 OpenSSH 版本与协议兼容性 某些较新版本的 OpenSSH 默认禁用了旧版算法以提高安全性,但这也可能导致与旧版客户端(如部分版本的 Xshell)不兼容。可以在服务端启用兼容性算法或在客户端升级到支持新版 SSH 协议的版本。使用以下命令查看当前 OpenSSH 版本: ```bash ssh -V ``` 若版本较新(如 OpenSSH 8.x),建议启用兼容性算法以支持更多客户端连接[^4]。 ### 3.5 日志分析与调试 启用 SSH 的详细日志记录有助于排查具体错误。在服务端修改 `sshd_config` 文件,设置日志级别为 `VERBOSE`: ```ini LogLevel VERBOSE ``` 然后查看 `/var/log/secure` 或 `/var/log/auth.log` 文件,查找连接失败的详细错误信息。例如: ```log Unable to negotiate with 192.168.1.100 port 52432: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 ``` 此类日志提示可以明确指出客户端和服务端支持的算法不匹配之处,便于针对性调整配置[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值