java - J2SSH - 添加 key 交换算法

标签 java scp j2ssh

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

从命令行(部署我的应用程序的 Solaris 计算机),scp 使用我们交换的 key 对可以正常工作。

从我的应用程序中,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

从上面我可以看到,我的应用程序和服务器之间的 key 交换没有匹配算法(调试实际上表明这个问题的根源是当服务器和客户端算法不匹配时出现AlgorithmNotAgreedException,所以我知道这是根本原因)。

如何向 j2ssh 添加新算法以便它可以找到匹配项? j2ssh 文档非常稀疏。

最佳答案

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

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

或到

com.maverick.ssh.components.standalone.DiffieHellmanGroup14Sha1

关于java - J2SSH - 添加 key 交换算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323092/

相关文章:

java - 我如何选择多个链作为biojava中结构对齐的结构对象

java - ConcurrentHashMap 和 Hash 表的区别

java - 小行星游戏 NullPointerException 错误

command-line - SSH SCP 本地文件到 Mac Os X 终端中的远程

java - 如何使用 Java ssh JSch 和 jcabi-ssh 将密码传递给 scp

linux - mv 命令有 scp 变体吗?

java - 我可以在我的java代码中使用两个ssh java lib吗?

java - 如何为 j2ssh 特立独行启用调试日志?

java - TCP 连接 - 服务器仅在关闭套接字后发送消息

java - 如何使用 sshtools SftpClient 和密码?