错误信息 "Unable to negotiate with 192.9.51.68 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss" 表明你的 SSH 客户端和服务器之间在协商加密密钥时遇到问题。具体来说,服务器提供了 ssh-rsa 和 ssh-dss 类型的密钥,但你的 SSH 客户端不支持这些类型的密钥或者出于安全考虑被禁用了。

这个问题通常是因为 OpenSSH 7.0 及以上版本已经弃用了 ssh-dss (DSA) 密钥,并且在一些配置中可能也限制了 ssh-rsa 密钥的使用,特别是如果它们使用较短的密钥长度(如1024位)。

为了解决这个问题,你可以尝试以下几种方法:

  1. 更新服务器端的 SSH 配置:最好的解决方案是更新服务器端的 SSH 配置,使用更安全的密钥类型,比如 ecdsa、ed25519 或 rsa 密钥(建议长度至少为2048位)。这需要服务器管理员的配合。

  2. 临时允许使用 ssh-rsa:如果你没有权利更新服务器的 SSH 配置,你可以在客户端临时允许使用 ssh-rsa 密钥。你可以通过修改 ~/.ssh/config 文件来实现这一点,添加以下内容:

    Host 192.9.51.68     HostkeyAlgorithms +ssh-rsa     PubkeyAcceptedKeyTypes +ssh-rsa 

    这会让你的 SSH 客户端接受 ssh-rsa 密钥类型用于与指定主机的连接。

  3. 使用 -o 选项在命令行中直接指定:如果你不想修改配置文件,你可以直接在命令行中使用 -o 选项来指定密钥类型,如下所示:

    ssh -o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa -i sshkey_wdcp root@192.9.51.68 

Q.E.D.

  • reword 您的打赏,就是俺创作的动力