使用Java中的ssh2连接到由RSA SecurID保护的linux系统
我想创建一个从Windows系统到Linux机器的连接,该机器使用RSA令牌密码进行身份验证,我想运行shell命令并从Java代码获得输出。使用putty登录到该Linux系统时,有以下步骤:
- 输入IP和端口并连接
- 在PuTTY终端中输入用户名,询问“登录身份:”
- 在输入RSA SecurID的位置输入密码
我已经尝试使用Jsch
包进行连接,但它没有连接。我还尝试了一个jcabi-ssh
(http://ssh.jcabi.com/),它是Jsch
的包装器。他们似乎都不为我工作
编辑:我使用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设置为“否”的代码:
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
然后我的错误变为:
com.jcraft.jsch.JSchException: Auth cancel
尝试使用另一个jcabi-ssh
实现会得到类似的结果
# 1 楼答案
您正在寻找的是一个对话框,它将在该时间点接受密码短语并建立连接。下面是集成RSA SecureId-http://www.jcraft.com/jsch/examples/UserAuthPubKey.java.html所需的内容