2012-04-25 99 views
1

我想從我的應用程序使用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文檔相當稀少。

+0

如果您使用Runtime的exec和scp,這看起來會更容易。 – 2012-04-25 20:44:53

+0

我同意你和@JeremyBrooks這兩個文件傳輸的不同實現可能是最好的解決方案,但這不是一個選項。這是一個特殊的用例,它違背了我們進行SFTP傳輸的方式。我不能在這個時候重寫這部分。現在我被j2ssh綁定,直到我有時間重寫它(看着你的Apache VFS) – 2012-04-25 21:13:02

回答

1

你應該在j2ssh發行版中有一個sshtools.xml文件。在該文件中,您可以添加額外的ExtensionAlgorithm進入 的Diffie-Hellman-group14-SHA1映射到com.maverick.ssh.components.jce.DiffieHellmanGroup14Sha1(或com.maverick.ssh.components.standalone。 DiffieHellmanGroup14Sha1

+0

其實我們使用j2ssh-0.2.9,而不是javassh.com的j2ssh。道歉,我應該指定。有一個sshtools.xml配置文件,但只有一個類實現SshKeyExchange,這是DhGroup1Sha1,所以雖然我應該可以配置它,但我沒有配置它。請糾正我,如果我在這裏錯了 – 2012-04-25 22:07:07

+0

您使用的是sourceforge的版本?該版本似乎只有一個SshKeyExchange實現。如果您有管理員訪問遠程服務器的權限,您可以將TECTIA配置爲支持diffie-hellman-group1-sha1(如[文檔](http://www.ssh.com/manuals/server-admin/62/ssh中所述) -server-config.html)) – dsalazar 2012-04-26 19:05:35

+0

是的,最終這就是我們所做的,將密鑰交換添加到TECTIA以使其工作。根據您對特立獨行者j2ssh的正確答案以及將算法直接添加到TECTIA的正確評論響應,將此答案標記爲接受。 – 2012-04-26 23:03:05

0

我沒有確切的答案給你的問題,但我有一個建議。看看jsch庫。我在幾個成功的應用程序中使用jsch。