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

标签 java ssh automation jsch challenge-response

我有启用了 SSH 的 Linux 手机。我需要通过质询-响应身份验证连接到它。那么这个过程看起来如何手动,例如,使用 PuTTY:

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

  2. 控制台显示“登录为:”-> 输入用户名。

  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 (与 UserInfo interface 一起)并使用 Session.setUserInfo 将实现与 session 相关联.

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

关于java - 如何使用 Java 自动化质询-响应身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329330/

相关文章:

java - 如何更改使用父类(super class)的此方法的输出

linux - 即使在物理断开连接并重新连接后,ssh 连接仍然存在

python - Paramiko 错误 : Error reading SSH protocol banner

c# - 如何创建具有依赖关系的单元测试

c# - 如果 catch 和 finally block 都抛出异常会发生什么?

java - 如何编写 ASTM 框架并将其发送到医疗设备

java - ObjectOutputStream 的对象如何调用 Serialized 对象的私有(private) writeObject 方法

SSH 失败,错误代码 "no error"

ruby - 我如何在 Watir 中协商警报框?

selenium - [Ashot][Selenium] - 为 iOS 和 Android 截图