J2SSH - 添加密钥交换算法

时间:2012-04-25 20:17:42

标签: java scp j2ssh

我正在尝试使用j2ssh将我的应用程序中的文件传输到服务器。远程服务器正在运行TECTIA。

从命令行(部署了我的应用程序的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文档很稀疏。

2 个答案:

答案 0 :(得分:1)

您应该在j2ssh发行版中有一个sshtools.xml文件。在该文件中,您可以添加一个额外的ExtensionAlgorithm条目来映射

diffie-hellman-group14-sha1 to
com.maverick.ssh.components.jce.DiffieHellmanGroup14Sha1

com.maverick.ssh.components.standalone.DiffieHellmanGroup14Sha1

答案 1 :(得分:0)

我对你的问题没有确切的答案,但我有一个建议。看看jsch库。我在几个应用程序中使用jsch并取得了成功。