欢迎光临
我们一直在努力

XShell 连接服务器报错“找不到匹配的 host key 算法“解决方案

问题描述

在使用 XShell 连接 Linux 服务器时,遇到以下错误:

找不到匹配的 host key 算法
Unable to negotiate with xxx.xxx.xxx.xxx port 22: no matching host key type found.

这是因为 SSH 客户端和服务器端支持的加密算法不匹配导致的。

解决方法

通过修改服务器端的 SSH 配置文件,添加更多兼容的加密算法即可解决。

步骤 1:登录服务器

首先需要通过其他方式登录到服务器(如控制台、VNC 等)

步骤 2:编辑 SSH 配置文件

sudo vi /etc/ssh/sshd_config

步骤 3:添加加密算法配置

在配置文件中添加以下内容(建议添加到文件末尾):

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-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512

HostKeyAlgorithms ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ssh-ed25519

配置说明:

  • KexAlgorithms:密钥交换算法
  • HostKeyAlgorithms:主机密钥算法

步骤 4:保存并退出

  • 按 ESC 键
  • 输入 :wq 保存并退出

步骤 5:重启 SSH 服务

# CentOS/RHEL 系统
sudo systemctl restart sshd

# 或者使用 service 命令
sudo service sshd restart

# Ubuntu/Debian 系统
sudo systemctl restart ssh

步骤 6:验证配置

重启服务后,使用 XShell 重新连接,问题解决!

验证 SSH 服务状态

如果想确认 SSH 服务是否正常运行:

# 查看 SSH 服务状态
sudo systemctl status sshd

# 查看 SSH 服务监听端口
sudo netstat -tlnp | grep sshd

注意事项

⚠️ 安全提示:

  • 启用 diffie-hellman-group1-sha1 等旧算法存在一定安全风险
  • 如果是内网环境,可以放心使用
  • 如果是公网服务器,建议只在必要时启用,或考虑升级 XShell 客户端
  • 💡 小贴士:

    • 修改配置前建议先备份原文件:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    • 如果重启服务后无法连接,可以通过控制台恢复备份文件

    其他解决方案

    如果修改服务器配置不方便,也可以:

  • 升级服务器 OpenSSH 版本(推荐,更安全)
  • 修改 XShell 客户端配置(在会话属性中启用更多算法)
  • 更换其他 SSH 客户端(如 MobaXterm、FinalShell 等)
  • 总结

    通过修改服务器 SSH 配置文件,添加兼容的加密算法,可以快速解决 XShell 连接报错的问题。这个方法简单高效,适合有服务器管理权限的场景。


    参考资源:

    • OpenSSH 官方文档:https://www.openssh.com/
    • SSH 配置手册:man sshd_config

    希望这篇文章对你有帮助!如果遇到问题,欢迎留言交流。

    赞(0)
    未经允许不得转载:171主机测评 » XShell 连接服务器报错“找不到匹配的 host key 算法“解决方案
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址