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 上克服这个问题,需要:

  1. 设置

winrm-authtype: credssp

在节点 yaml 文件上(我通过添加 yaml 文件将节点添加到 rundeck)

  1. 在 Rundeck 机器上安装所需的 pip 包

pip install pywinrm[credssp]

  1. 在 Windows 节点上为“WinRM 客户端”和“WinRM 服务”启用 credSSP 认证组策略。关于它的更多详细信息,您可能会发现 here