使用Java中的ssh2连接到由RSA SecurID保护的Linux系统
我想创建一个从Windows系统到Linux机器的连接,它使用RSA令牌密码进行身份validation,我想运行shell命令并从Java代码获取输出。 使用putty登录Linux系统时,请执行以下步骤:
- 输入IP和端口并连接
- 在PuTTY终端输入用户名,询问“登录为:”
- 输入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