我想從我的應用程序使用j2ssh到服務器的SCP文件。遠程服務器正在運行TECTIA。J2SSH - 添加密鑰交換算法
從命令行(我的應用程序部署的Solaris機器),scp使用我們交換的密鑰對正常工作。
從我的應用程序,J2SSH無法建立連接時,拋出異常:
Caused by: com.sshtools.j2ssh.transport.TransportProtocolException: The connection did not complete
從J2SSH調試日誌顯示以下信息:
com.sshtools.j2ssh.transport.TransportProtocolCommon.beginKeyExchange(Unknown Source) | Starting key exchange
com.sshtools.j2ssh.transport.TransportProtocolCommon.determineAlgorithm(Unknown Source) | Determine Algorithm
com.sshtools.j2ssh.transport.TransportProtocolCommon.determineAlgorithm(Unknown Source) | Client Algorithms: [diffie-hellman-group1-sha1]
com.sshtools.j2ssh.transport.TransportProtocolCommon.determineAlgorithm(Unknown Source) | Server Algorithms: [diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1]
com.sshtools.j2ssh.transport.TransportProtocolCommon.sendMessage(Unknown Source) | Sending SSH_MSG_DISCONNECT
com.sshtools.j2ssh.transport.TransportProtocolCommon.run(Unknown Source) | The Transport Protocol has been stopped
從上面我可以看到上面我的應用程序和服務器之間的密鑰交換沒有匹配的算法(調試實際上表明,當沒有服務器和客戶端算法匹配時,此問題的根源是AlgorithmNotAgreedException
,所以我知道這是根本原因)。
如何將新算法添加到j2ssh以便找到匹配? j2ssh文檔相當稀少。
如果您使用Runtime的exec和scp,這看起來會更容易。 – 2012-04-25 20:44:53
我同意你和@JeremyBrooks這兩個文件傳輸的不同實現可能是最好的解決方案,但這不是一個選項。這是一個特殊的用例,它違背了我們進行SFTP傳輸的方式。我不能在這個時候重寫這部分。現在我被j2ssh綁定,直到我有時間重寫它(看着你的Apache VFS) – 2012-04-25 21:13:02