java - Windows 到 Linux 文件传输上的 JCifs 登录失败

标签 java linux authentication jcifs

以下代码在从 Windows 到 Windows 文件传输时可以正常工作,但是当我在 Linux 中使用此代码(从 Windows 到 Linux 文件传输)时,我收到错误。

Error:

jcifs.smb.SmbAuthException:登录失败:未知的用户名或错误的密码。

String user = "username",
    pass = "password",
    path = "smb://192.168.1.195/path/file.txt";

   try {        
       NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", user, pass);
       SmbFile smbFile = new SmbFile(path, auth);               
       InputStream stream = new SmbFileInputStream(smbFile);
       ...

   } catch (IOException e) {
       e.printStackTrace();
   }

最佳答案

我认为问题在于您正在尝试使用 Windows 凭据登录 Linux 计算机。 NtlmPasswordAuthentication 仅适用于 Windows,不适用于 Linux。从 Linux 到 Windows,这都有效,因为它可以正确地将密码转换为 Windows 可以对其进行身份验证的形式。但是,当您尝试将 Windows 转换为 Linux 时,它会生成不正确的值。

关于java - Windows 到 Linux 文件传输上的 JCifs 登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488114/

相关文章:

java - JPA 继承 IdClass Location 最佳实践

java - Netty客户端没有收到Server发送的完整数据

linux - 是否可以让 jenkins 访问只有 root 或某些特定程序才能访问的文件?

linux - 重启后 XenServer 错误(xenopsd 内部错误)

php - 解释 Windows 上的 ImageMagick 和 CentOS linux 上的 ImageMagick 有什么不同?

java - 记录格式错误的 Axis2 请求

java - 如何在 Java 中制作 InputStream 的深拷贝

azure - 如何在 Azure Blob 存储上的静态网站中启用 Azure AD(Azure Active Directory)身份验证

ruby-on-rails - 设计与 devise_token_auth : How to handle authentication for both a web app and API

scala - 使用 finagle 进行持久身份验证