【问题标题】:Connect to a linux system secured by RSA SecurID using ssh2 in Java在 Java 中使用 ssh2 连接到由 RSA SecurID 保护的 linux 系统
【发布时间】:2018-07-17 18:33:43
【问题描述】:

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

  1. 输入IP和端口并连接
  2. 在要求“登录为:”的 PuTTY 终端中输入用户名
  3. 在我们输入 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 实现会得到类似的结果。

【问题讨论】:

  • “它没有连接” - 即第 1 步失败?所以你还没有得到 RSA 令牌?
  • 或者是 TCP 还是 TCP 连接已经建立,但是一些协商失败了?您是否收到任何错误消息或异常?
  • @Rup 检查编辑
  • 谢谢。 Auth cancel 听起来它没有可以使用的身份验证方法。也许 RSA 令牌值在内部具有与密码不同的代码?我认为你最好的选择是在 JSch 中找到生成取消的代码并找出原因,如果是因为它找不到通用的身份验证方法,那么检查客户端和服务器都知道哪些值。
  • 我已经快速浏览了 SourceForge 的 JSch 代码 - 烦人的是我没有可以链接到的源浏览器,但这里是 an old snapshot on GitHub 并且相关位没有改变。看起来这是由 JschAuthCancelException 触发的,所以如果你可以让你的调试器打破它,这将帮助你追踪它的来源:它是由它无法解密的公钥触发的,或者没有密码验证密码,或者如果它无法显示密码提示(或者如果用户取消了交互式密码提示)。

标签: java linux ssh sftp securid


【解决方案1】:

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

【讨论】:

  • 该示例显然是用于私钥身份验证而不是 SecureId,并且他已经拥有想要使用的值 - 他不需要对话。他应该做的代码中是否还有其他特定的东西你试图突出显示?
  • 显然您必须修改该代码。使用 com.rsa.authagent.authapi.AuthAgentException com.rsa.authagent.authapi.AuthSession com.rsa.authagent.authapi.AuthSessionFactory。您可以搜索使用 RSA authagent 的示例。
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2018-07-29
  • 2011-06-20
  • 2013-02-06
  • 2015-12-30
相关资源
最近更新 更多