JSch 中的 SSH 连接问题

SSH connection problems in JSch

我正在尝试使用 JSch 连接到服务器。我收到 "Negotiation fail" 错误。我检查了 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 程序中。

我发现了问题,事实证明我必须下载 Java 加密扩展 (JCE) 并将文件替换为以下路径中安全文件夹中存在的文件: C:\程序Files\Java\jre6\lib\security\

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