smbclient 上不推荐使用 kerberos 选项,但它是唯一有效的选项!

smbclient 上不推荐使用 kerberos 选项,但它是唯一有效的选项!

在 Slackware 15(Samba 版本 4.15.10)上,我想做 smbclient,使用 gssapi/kerberos 身份验证。当然,kerberos 客户端缓存已在登录时设置,我可以在 tmp 目录中看到文件缓存。 Pam 配置为使用 pam_krb5 进行密码会话和身份验证

如果我使用新的 --use-kerberos.. 询问密码!

smbclient -U pino --use-kerberos=required \\\\myhost\\Pub 
Password for [MYDOM\pino]:

如果我删除 -U pino,我会执行 sudo su - Pino 或使用 Pino 登录,同样的事情。

如果我使用已弃用的 -k..works

smbclient -U pino -k \\\\myhost\\Pub 
    Password for [MYDOM\pino]:
    WARNING: The option -k|--kerberos is deprecated!
    Try "help" to get a list of possible commands.
    smb: \> 

如何使用 kerberos 进入..不带 -k ?

编辑:可能是一个错误..或者我的配置错误,但是使用 smbclient -U pino \\myhost\Pub

要求输入密码..我按 Enter 并使用 kerberos!

情况 1:有票,要求通行证..我按 Enter 并使用 kerberos

smbclient  \\\\myhost\\Pub
Password for [[email protected]]:
Try "help" to get a list of possible commands.
smb: \> 

情况 2:kdestroy,auth 失败(符合逻辑,OK,对)

kdestroy
smbclient  \\\\myhost\\Pub
Password for [[email protected]]:
gensec_spnego_client_negTokenInit_step: Could not find a suitable mechtype in NEG_TOKEN_INIT
session setup failed: NT_STATUS_INVALID_PARAMETER

现在的问题是..为什么仍然要求输入密码?

答案1

找到解决方案。

需要使用 kerberos(由于用户 roaima,也可以在 smb.conf 中设置永久)。 -N 不要求通行证。

echo mypass|kinit
Password for [email protected]: 
smbclient -N --use-kerberos=required '\\myhost.priv\myshare'
Try "help" to get a list of possible commands.
smb: \> 

使用“旧”语法也可以正常工作

 echo mypass|kinit
 Password for [email protected]: 
 smbclient -N --use-kerberos=required \\\\MYHOST\\myshare
 Try "help" to get a list of possible commands.
 smb: \> 

答案2

我在这里处于劣势,因为在我用于测试的机器上我运行的是早期版本的smbclient(4.9.5-Debian)。然而,根据samba.org 上的手册页似乎独立的首选替代品-k是表明如何你想使用 Kerberos:

--use-kerberos=desired|required|off此参数确定 Samba 客户端工具是否尝试使用 Kerberos 进行身份验证。对于 Kerberos 身份验证,连接到服务时需要使用 dns 名称而不是 IP 地址。

请注意,此处指定此参数将覆盖文件client use kerberos中的参数${prefix}/etc/smb.conf

所以,我希望你应该使用类似这样的场景,

kinit [email protected]    # Domain in capitals. Provide password
smbclient --use-kerberos=required '\\SERVER\Share'

请注意,如果我使用旧形式的命令,smbclient我不会收到输入密码的提示:

smbclient -k '\\SERVER\Share'

与您的情况的这种差异表明您kinit失败了或票证已过期。不要依赖 中文件的存在/tmp,而是运行klist来确认票证的有效性:

klist
Ticket cache: FILE:/tmp/krb5cc_1001
Default principal: [email protected]

Valid starting     Expires            Service principal
28/10/22 17:25:55  29/10/22 03:25:55  krbtgt/[email protected]
        renew until 29/10/22 17:25:52
28/10/22 17:26:05  29/10/22 03:25:55  cifs/[email protected]

相关内容