使用 Renci.SshNet 的 SHA2 服务器 SFTP 指纹

SHA2 server SFTP fingerprints using Renci.SshNet

我正在使用 Renci.SSHNet 建立与 SFTP 服务器的连接。我这样做没有任何问题,但我最近 运行 进入了一个服务器,我无法通过我的代码建立连接。
我不断收到以下错误:

No suitable authentication method found to complete authentication (publickey,keyboard-interactive).

问题是,我知道主机、用户和密码是正确的,因为我可以使用 FileZilla 建立连接。我注意到在使用 FileZilla 连接到其他服务器时,我也可以用我的代码连接到的服务器的指纹是通过 RSA 生成的,而不是给我带来麻烦的 SHA2。

TL/DR: 我想知道的是:Renci.SshNet.SFTP 库是否与 sha-2 生成的指纹兼容,还是我必须使用另一个这个图书馆?

SSH.NET 库尚不支持 ECDSA 密钥交换算法 (ecdh-sha2-*)(截至 2014.4.6-beta2 版本)。

它支持这些:

  • diffie-hellman-group-exchange-sha256
  • diffie-hellman-group-exchange-sha1
  • diffie-hellman-group14-sha1
  • diffie-hellman-group1-sha1

ecdh-sha2-* 被注释掉了,可能是因为实现不是 complete/tested。


不过请注意,服务器可以支持多种算法,并且可以与不同的客户端就不同的算法达成一致。

因此,您在 FileZilla 中看到不受支持的密钥类型这一事实并不意味着服务器必须坚持使用此密钥类型。

从认证阶段连接失败的事实可以看出,服务器不需要ECDSA密钥交换。身份验证仅在 一次成功的密钥交换后发生。所以你的根本问题不是密钥交换,而是身份验证。

如果您需要帮助解决您的身份验证问题,start a new question,包括相关的源代码、FileZilla 日志文件并向我们解释您是如何在服务器端设置身份验证的。服务器端日志文件也可能有帮助。