smbclient 连接到 Windows 机器时出现 NT_STATUS_LOGON_FAILURE 错误。

我在Ubuntu上运行smbclient,试图连接到一个Windows机器,但是出现了“会话建立失败:NT_STATUS_LOGON_FAILURE”的错误。
我已经确认我可以ping通该机器,并且telnet到139/445端口,所以我相当确定这不是防火墙问题。而且我的客户说他们可以使用相同的用户名和密码组合从另一台Windows机器连接到这个Windows机器,没有任何问题。此外,这台机器可以通过smbclient连接到其他由该客户拥有的Windows机器。
还有其他什么原因导致这个无法工作吗?
6个回答

你有检查过你的smb.conf文件吗?
确保你的工作组和安全设置正确配置。如果你正在与域中的计算机一起工作,认证请求首先会通过你的域控制器传递,所以确保你有类似以下内容的设置:
security = domain
workgroup = WORKGROUP

你还可以使用-W选项来指定工作组,并在用户名之前添加DOMAIN/来指定域:
$smbclient -L myhost -U DOMAIN/user -W workgroup

希望这能帮到你!

结果证明添加域名就解决了问题。显然,某些版本的Windows需要域名,而其他版本则不需要?但是,谢谢! - David Jaquay
请注意,“security = domain”部分在此处是不必要的。除了在smb.conf中指定工作组外,您还可以在smbclient的命令行中指定它。 - jelmer
是的,我使用smbclient的-W选项使其正常工作。 - David Jaquay
7DOMAIN/username应该也可以使用。 - Calmarius
1您还可以使用带有-W参数的smbclient。 - Andre Miras
不要忘记执行以下命令:smbpasswd -a user - Viacheslav Dobromyslov

同样的问题。我不得不使用以下命令将用户添加到Samba密码文件中:
sudo smbpasswd -a
显然,这是因为/etc/samba/smb.conf中的默认配置如下:
security = user passdb backend = tdbsam
我没有使用域控制器或活动目录,所以我本以为可以默认访问常规密码文件,但显然不行。如果文档中能明确说明这一点就好了。提供的“smbpasswd”参考给出了解决方案的线索。

我在一个域上,这是我认为我必须这样做的方式,因为我不在Linux上使用我的域用户,它是一个在Windows主机上的个人开发Linux客户端。此外,我现在能够成功连接到客户端的smbclient -L localhost,但还不能使用Windows主机进行连接。我认为这至少是向前迈出的一步。从这里开始,你应该在你的回答中包括要检查的端口号。 - Brian Thomas

在Windows 10(主机)和CentOS 7(客户机)上,我成功解决了身份验证问题,方法是关闭密码保护共享: 网络和共享中心/高级共享设置/所有网络/密码保护共享

这只适用于故障排除,我不建议每天都关闭它。


我之前在使用smbclient时也遇到了同样的问题,后来我发现当我手动选择了文件共享对话框中的“仅启用文件共享”选项后,问题就解决了。你可以通过手动右键点击想要共享的文件夹后获取到这个对话框。
在某些Windows机器上(比如Windows XP),你需要添加以下内容来允许非访客用户进行远程共享:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest=dword:0

或者,可以通过Windows XP命令行进行自动化操作:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v forceguest /t REG_DWORD /d 00000000 /f

在那之后,smbclient与任何用户都没有出现任何问题。
非常感谢jethomas在http://www.techsupportforum.com/forums/f10/enable-file-sharing-via-the-command-line-133562.html中的帮助。

我运行时遇到了同样的问题。
smbclient \\\\[ip]\\[sharedresource]

那个命令要求我输入root用户的密码,但是当我输入密码时,我收到了NT_STATUS_LOGON_FAILURE错误。
我添加了-U来指定我的远程机器的用户名,然后它就正常工作了。
smbclient \\\\[ip]\\[sharedresource] -U [username]

可能是由以下原因导致的:
  1. 如果在smb.conf中提供了有效的用户,请交叉检查smbpasswd。
  2. 检查hosts文件。

不确定为什么这个回答被踩了。这个回答指导我使用smbpasswd来设置凭据,正是我在遇到同样错误时所需要的。 - Rick Chatham