gpt4 book ai didi

java - JSch PAM 身份验证 - "Auth fail"- 凭据正确

转载 作者:行者123 更新时间:2023-11-30 02:36:17 25 4
gpt4 key购买 nike

我正在构建一个 SFTP 类,负责列出远程目录的文件。我正在使用 JSch 库来执行此操作。我已经设置了一个用户,并且我可以手动通过 SSH 连接到远程服务器。但是,当 JSch 尝试连接时,它会响应

com.jcraft.jsch.JSchException: Auth fail

不过我注意到一件事;当我手动通过 SSH 连接到服务器时,我看到它正在使用“PAM 身份验证”。我错过了什么?

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
Session session = jSch.getSession(username, destination, port);
session.setPassword(password);
session.setConfig(config);
session.connect();

最佳答案

如果您在服务器端使用 PAM 身份验证,则可能需要在客户端实现键盘交互身份验证。

参见What's the difference between “password” and “keyboard-interactive”?问题以了解 PAM 和键盘交互式身份验证之间的关系。

<小时/>

有关键盘交互式身份验证实现示例,请参阅 official UserAuthKI example .

基本上你需要实现 UIKeyboardInteractive interface (与 UserInfo interface 一起)并使用 Session.setUserInfo 将实现与 session 关联起来.

如果身份验证仅提示输入单个“密码”,请实现 UIKeyboardInteractive.promptKeyboardInteractive method返回带有密码的单个元素数组。

<小时/>

强制警告:请勿使用 StrictHostKeyChecking=no 盲目接受所有主机 key 。这是一个安全缺陷。您失去了针对 MITM attacks 的保护。有关正确(且安全)的方法,请参阅:How to resolve Java UnknownHostKey, while using JSch SFTP library?

关于java - JSch PAM 身份验证 - "Auth fail"- 凭据正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42983732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com