我想创建从 Windows 系统到使用 RSA 令牌密码进行身份验证的 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 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
实现会产生类似的结果。