2016-03-14 55 views
0

我正在使用Renci.SSHNet建立到SFTP服務器的連接。我這樣做沒有任何問題,但最近我遇到了一個服務器,我無法通過我的代碼建立連接。
我不斷收到以下錯誤:SHA2服務器使用Renci.SshNet的SFTP指紋

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

的事情是,我知道主機,用戶名和密碼是正確的,因爲我可以建立使用FileZilla中的連接。我注意到,在使用FileZilla連接到其他服務器時,我也可以通過RSA生成與我的代碼連接的指紋,而不是那些給我帶來麻煩的指紋,即SHA2。

TL/DR:我想知道的是:是否與sha-2生成的指紋兼容的Renci.SshNet.SFTP庫,還是必須爲此使用另一個庫?

+0

什麼AuthenticationMethod你構建你的ConnectionInfo實例? – trousyt

+0

你問關於服務器密鑰還是用戶密鑰? –

+0

@trousyt是這樣的做: 公共SSHFileTranferProtocol(字符串主機名,INT端口,用戶名字符串,字符串密碼) { PasswordConnectionInfo connectionInfo =新PasswordConnectionInfo((主機名,端口,用戶名,密碼); SFTP =新SftpClient( connectionInfo); sTransferResultMessage =「」; } – user6062387

回答

0

SSH.NET庫不支持ECDSA密鑰交換算法(ecdh-sha2- *)(截至2014.4.6-beta2版本)。

它支持這些:

  • 的Diffie-Hellman羣交換-SHA256
  • 的Diffie-Hellman羣交換-SHA1
  • 的Diffie-Hellman-group14-SHA1
  • 的Diffie hellman-group1-sha1

ecdh-sha2 - *被註釋掉了,可能是因爲實現沒有完成/測試。


雖然請注意,服務器可以支持多種算法,並可以與不同的客戶端達成不同的算法。

因此,您在FileZilla中看到不支持的密鑰類型的事實並不意味着服務器必須堅持使用此密鑰類型。

很明顯,服務器不需要在認證階段連接失敗的事實進行ECDSA密鑰交換。在成功的密鑰交換後,認證僅發生在之後。所以你的根本問題不是密鑰交換,而是認證。

如果您需要解決認證問題的幫助,start a new question包括相關源代碼,FileZilla日誌文件並向我們解釋您在服務器端設置身份驗證所做的操作。服務器端日誌文件也可能有幫助。

+0

非常感謝!我會嘗試儘可能多地獲取信息,然後我會提出一個新問題。 – user6062387