Rundeck 作业因 PermissionDenied UnauthorizedAccessException 而失败
Rundeck job fails with PermissionDenied UnauthorizedAccessException
我在 运行deck 中有一份工作,它通过某个域网络的用户凭据连接到 windows 机器,运行s 从另一台机器复制某个文件夹的脚本域网络。
与 windows 节点的连接由 WinRM 完成。
当我 运行 通过 运行deck job 编写的脚本失败并出现错误
[ERROR ] Test-Path : Access is denied
10:43:56 At E:\scripts\site_backup.ps1:20 char:10
10:43:56 + if(-not (Test-Path $BackupDirectory)) {
10:43:56 + ~~~~~~~~~~~~~~~~~~~~~~~~~~
PermissionDenied: (\some.path.local\dprr...rw-tests-pq:String) [Test-Path], UnauthorizedAccessException
但是,如果我 运行 同一用户下的那个脚本通过 RDP 连接到那台机器,它工作正常。
我怀疑 WinRM 服务没有足够的权限。也许我错了。我该如何解决这个问题?任何帮助将不胜感激。
那是“双跳”PowerShell 问题。您可以查看完整的解释 here, and here a good approach. Also here 一个很好的解决方法。
正如@MegaDriver68k 所说,这是“双跳”Powershell 问题。为了在 Rundeck 上克服这个问题,需要:
- 设置
winrm-authtype: credssp
在节点 yaml 文件上(我通过添加 yaml 文件将节点添加到 rundeck)
- 在 Rundeck 机器上安装所需的 pip 包
pip install pywinrm[credssp]
- 在 Windows 节点上为“WinRM 客户端”和“WinRM 服务”启用 credSSP 认证组策略。关于它的更多详细信息,您可能会发现 here
我在 运行deck 中有一份工作,它通过某个域网络的用户凭据连接到 windows 机器,运行s 从另一台机器复制某个文件夹的脚本域网络。 与 windows 节点的连接由 WinRM 完成。
当我 运行 通过 运行deck job 编写的脚本失败并出现错误
[ERROR ] Test-Path : Access is denied
10:43:56 At E:\scripts\site_backup.ps1:20 char:10
10:43:56 + if(-not (Test-Path $BackupDirectory)) {
10:43:56 + ~~~~~~~~~~~~~~~~~~~~~~~~~~
PermissionDenied: (\some.path.local\dprr...rw-tests-pq:String) [Test-Path], UnauthorizedAccessException
但是,如果我 运行 同一用户下的那个脚本通过 RDP 连接到那台机器,它工作正常。
我怀疑 WinRM 服务没有足够的权限。也许我错了。我该如何解决这个问题?任何帮助将不胜感激。
那是“双跳”PowerShell 问题。您可以查看完整的解释 here, and here a good approach. Also here 一个很好的解决方法。
正如@MegaDriver68k 所说,这是“双跳”Powershell 问题。为了在 Rundeck 上克服这个问题,需要:
- 设置
winrm-authtype: credssp
在节点 yaml 文件上(我通过添加 yaml 文件将节点添加到 rundeck)
- 在 Rundeck 机器上安装所需的 pip 包
pip install pywinrm[credssp]
- 在 Windows 节点上为“WinRM 客户端”和“WinRM 服务”启用 credSSP 认证组策略。关于它的更多详细信息,您可能会发现 here