我在 Windows 计算机上使用 PyWinRm 使用 Kerberos 连接到远程主机。在我们的环境中,我们在 Linux 计算机上使用 pywinrm 来始终使用 Kerberos 运行 PowerShell 命令。我遇到的问题是,当我尝试运行一个简单的命令时,例如:“echo test”,它给我一个错误“指定的凭据被服务器拒绝”。我已将 winrm 配置为支持远程 PowerShell,并使其能够与 ntlm 一起使用,但不能与 Kerberos 一起使用。
Kerberos = true
Negotiate = true
certificate = true
cbthardeninglevel = Relaxed
import winrm
S = winrm.Session("ComputerName", auth=("UserName", None),
transport="kerberos")
r = s.run_ps('ipconfig')
print(r.std_out)
我尝试将主机名更改为http://ComputerName:5985/wsman,但仍然收到凭据被拒绝的错误。 我安装了 winkerberos,但我不知道如何或是否需要在这里实现它。我将 kerberos_delegation=True 添加到会话命令中,但仍然出现凭据错误。 Kerberos 确实可以在我的机器上运行,因为我使用了另一个名为 ms_active_directory 的库,该库使用 Kerberos 并且可以运行。
跑步后
winrm enumerate winrm/config/listener
我只有一个 http 运行的侦听器。看到配置 basic = True 不安全,我使用以下命令创建一个新的侦听器:
winrm quickconfig -transport:https
完成后,将主机名更改为 https://ComputerName:5986/wsman 后,kerberos 就能够进行通信了