为什么不能curl检索SSH主机密钥(key:<none>)

我一直在使用curl(通过git-ftp)一段时间,只传递用户名和sftp URL。

身份validation将始终隐式通过publickey工作。

突然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

为什么不能卷起钥匙?

连接与ssh -v工作,并给我2主机键,也curl --insecure将工作。

libssh2不支持像ecdsa-sha2-nistp256和ssh-ed25519之类的一些以后的密钥 。

所以,如果你的.ssh / known_hosts中已经有这些键中的一个,那么libssh2将会失败。 但是您可以添加另一个libssh2支持的密钥,如RSA:

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

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

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