使用Java中的ssh2连接到由RSA SecurID保护的Linux系统

我想创建一个从Windows系统到Linux机器的连接,它使用RSA令牌密码进行身份validation,我想运行shell命令并从Java代码获取输出。 使用putty登录Linux系统时,请执行以下步骤:

  1. 输入IP和端口并连接
  2. 在PuTTY终端输入用户名,询问“登录为:”
  3. 输入PASSCODE,我们输入RSA SecurID

我已经尝试使用Jsch包连接,但它没有连接。 我还尝试了一个jcabi-ssh的包装器jcabi-ssh ( http://ssh.jcabi.com/ )。 它们似乎都不适合我。

编辑:我使用Jsch包使用以下代码

  String host = "xxx"; String user = "xxx"; String password; Scanner scanner = new Scanner (System.in); System.out.println("Enter rsa token: "); password = scanner.nextLine(); Session session = jsch.getSession(user, host, 2222); session.setPassword(password); session.connect(); 

之后我收到以下错误:

com.jcraft.jsch.JSchException: UnknownHostKey: myservername. RSA key fingerprint is ba:2b:70:2f:4f:fa:f6:20:31:56:e0:e8:8b:16:46:c9

我找到了一个解决方案,有人说这条代码将StrictHostKeyChecking设置为“no”:

  java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); 

然后我的错误变为:

 com.jcraft.jsch.JSchException: Auth cancel 

尝试使用其他jcabi-ssh实现可以得到类似的结果。

您正在寻找的是一个对话框,它将接受该时间点的密码短语并建立连接。 以下是集成RSA SecureId所需的内容 – http://www.jcraft.com/jsch/examples/UserAuthPubKey.java.html