为什么 curl 无法检索 SSH 主机密钥(密钥:)

为什么 curl 无法检索 SSH 主机密钥(密钥:)

我已经使用 curl(通过 git-ftp)一段时间了,并且只传递用户名和 URL sftp

身份验证总是通过公钥隐式地进行。

突然间,curl 不再通过 SSH 连接 —— 显然是因为它没有获取主机密钥,因此拒绝连接:

Trying {IP}... * Connected to host.example.com ({IP}) port 22 (#0) * SSH MD5 fingerprint: {Fingerprint} * SSH host check: 2, key: <none> * Closing connection 0

为什么curl无法获取密钥?

与工作连接ssh -v并确实给我 2 个主机密钥,也curl --insecure可以工作。

答案1

libssh2 不支持一些较新的密钥,如 ecdsa-sha2-nistp256 和 ssh-ed25519

因此,如果你的电脑中已经有了这些密钥之一.ssh/已知主机,libssh2 将失败。但您可以添加 libssh2 支持的另一个密钥,例如 RSA:

要修复此问题,请从远程主机检索 RSA 公钥并将其添加到您的known_hosts文件中:

ssh-keyscan hostname.example.com >> ~/.ssh/known_hosts

确切的格式和文件位置可能因系统而异。

答案2

我通过将文件内的 ipv6 地址替换为域来解决了该问题known_hosts

碰巧它已经存在于known_hosts2同一目录中名为的文件中,但我猜测该文件实际上并未被 ssh/curl 读取。

相关内容