2

我想创建从 Windows 系统到使用 RSA 令牌密码进行身份验证的 Linux 机器的连接,并且我想运行 shell 命令并从 Java 代码中获取输出。使用 putty 登录该 Linux 系统时,有以下步骤:

  1. 输入IP和端口并连接
  2. 在要求“登录为:”的 PuTTY 终端中输入用户名
  3. 在我们输入 RSA SecurID 的地方输入 PASSCODE

我已经尝试使用Jsch包连接,但它没有连接。我还尝试了一个jcabi-sshhttp://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实现会产生类似的结果。

4

1 回答 1

0

您正在寻找的是一个对话框,它将在那个时间点接受密码并建立连接。这是您需要集成 RSA SecureId - http://www.jcraft.com/jsch/examples/UserAuthPubKey.java.html

于 2018-07-17T10:33:43.753 回答