【问题标题】:SSH connection problems in JSch [duplicate]JSch中的SSH连接问题[重复]
【发布时间】:2015-08-11 06:57:36
【问题描述】:

我正在尝试使用 JSch 连接到服务器。我收到“协商失败”错误。我检查了 sshd_config 文件并得到以下信息:

UsePAM yes
PasswordAuthentication no
Ciphers aes128-ctr,aes256-ctr,arcfour256,arcfour,aes128-cbc,aes256-cbc
AllowTcpForwarding no
PermitRootLogin no

其余的脚本都被注释掉了。如您所见,它没有提及有关支持的密钥交换方法的任何内容。 1.这似乎是问题吗?还是出现此错误的任何其他原因? 我很难获得批准进行更改和测试,所以我想先确定,然后再应用更改。

另外,这就是我从记录器中得到的全部信息:

INFO: Connecting to xx.xxx.xxx.xxx port 22
INFO: Connection established
INFO: Remote version string: SSH-2.0-OpenSSH_5.1
INFO: Local version string: SSH-2.0-JSCH-0.1.31
INFO: SSH_MSG_KEXINIT received
INFO: SSH_MSG_KEXINIT sent
Exception in thread "main" com.jcraft.jsch.JSchException: Algorithm negotiation fail
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:540)
    at com.jcraft.jsch.Session.connect(Session.java:288)
    at com.jcraft.jsch.Session.connect(Session.java:145)
    at SSHConnection.connect(SSHConnection.java:21)
    at SSHConnection.main(SSHConnection.java:25)
  1. 有没有其他方法可以找出服务器支持的密钥交换方法?
  2. 还有其他方法可以连接到此服务器吗?我需要将它集成到我的 Java 程序中。

【问题讨论】:

标签: ssh network-programming server jsch public-key-exchange


【解决方案1】:

我发现了问题,原来我必须下载 Java Cryptography Extension (JCE) 并将文件替换为以下路径中安全文件夹中存在的文件: C:\Program Files\Java\jre6\lib\security\

希望这对遇到同样问题的人有所帮助。

【讨论】: