使用ch.ethz.ssh2.Connection使用JAVA进行SSH连接

时间:2012-09-11 11:34:22

标签: java ssh rsa

我正在尝试使用lib ch.ethz.ssh2.Connection

通过ssh2连接到远程服务器
connexion = new Connection(host);
connexion.connect();
boolean isOK = connexion.authenticateWithPassword(login, pass);

但是我在connexion.connect()中得到了一个IOException。有这个错误消息:

Connection closed (Signature sent by remote is wrong!)

我尝试使用Putty连接到同一台服务器,我收到一条消息,告诉我指纹不是预期的,但如果我点击是确认我可以连接。

我在Java Doc中读到我可以忽略密钥的验证,但不推荐(http://www.ganymed.ethz.ch/ssh2/javadoc/ch/ethz/ssh2/Connection.html#connect%28ch.ethz.ssh2.ServerHostKeyVerifier,%20int,%20int%29)。

我正在寻找的是一种改变服务器内容的方法,以便我可以正确连接。我不想改变Java代码。

谢谢,

Otmane MALIH

2 个答案:

答案 0 :(得分:1)

远程指纹缓存在计算机上的某个位置。你需要做两件事:

  1. 找出远程指纹发生变化的原因。不太可能,但有人可能会篡改您的连接或远程服务器。

  2. 刷新缓存。查看SSH框架的文档如何执行此操作。下次连接时,远程指纹将重新缓存。

答案 1 :(得分:0)

事实证明,这是由于我使用的ganymed版本中的错误。

我将它从001更改为209,现在一切正常。

感谢Aaron Digulla的回答。