我想创建从 Windows 系统到使用 RSA token 密码进行身份验证的 Linux 机器的连接,我想运行 shell 命令并从 Java 代码获取输出。使用 putty 登录该 Linux 系统时有以下步骤:
- 输入IP和端口并连接
- 在要求“登录为:”的 PuTTY 终端中输入用户名
- 在我们输入 RSA SecurID 的地方输入 PASSCODE
我已经尝试使用 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 指纹为 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
实现会得到类似的结果。
最佳答案
您正在寻找的是一个对话框,它将在那个时间点接受密码并建立连接。这是集成 RSA SecureId 所需的 - http://www.jcraft.com/jsch/examples/UserAuthPubKey.java.html
关于java - 在 Java 中使用 ssh2 连接到受 RSA SecurID 保护的 linux 系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51166570/