如何使用 Java 自动执行质询-响应身份验证

How to automate challenge-response authentication using Java

我 Linux phone 启用了 SSH。我需要通过质询-响应身份验证连接到它。那么如何手动查看此过程,例如,使用 PuTTY:

  1. 使用 IP 和端口连接到 phone。

  2. 控制台显示"login as:" -> 输入用户名。

  3. 控制台显示:

    login as: craft

    Challenge: 547-04302
    Product ID: 7000315107

    Response:

  4. 我需要复制 Challenge,使用 Challenge 从其他服务器获取 Response,然后在控制台中输入 Response。

如何使用 Java 和一些 SSH 库(我试过 JSch,但没有挑战-响应方法)来做到这一点?我只需要将Challenge写入String,然后使用String response输入Response即可。

感谢您的帮助。

质询-响应认证也称为键盘交互认证。

JSch 库支持它。

见官方JSch UserAuthKI example.

基本上你需要实现 UIKeyboardInteractive interface (together with the UserInfo interface) and associate the implementation with the session using the Session.setUserInfo.

要对单个挑战使用编程响应,只需从 UIKeyboardInteractive.promptKeyboardInteractive methodprompt[0] 参数和 return 带有响应的单个元素数组中收集挑战。