【问题标题】:Double hop access to copy files without CredSSP无需 CredSSP 的双跳访问复制文件
【发布时间】:2023-11-17 12:28:01
【问题描述】:

你好,

我们拥有包含数百台虚拟机的大型环境。在我们的服务部署期间,我们需要将一些文件从 build drop 复制到所有这些机器上。

所以,我们有:

  • 执行部署脚本的用户计算机
  • 构建放置机器,文件所在的位置
  • 目标机器

Powershell 用作脚本语言。比如:

$buildDrop     = "\\sourceMachine\Build"
$machineTarget = "targetMachine"

Invoke-Command -ComputerName $machineTarget -ArgumentList $buildDrop -ScriptBlock {
     Param( $buildDrop )
     Test-Path $buildDrop # Will return False
}

这种方法导致double hop issue,由于 XP 和 2k3 机器不支持 CredSSP 功能,我无法解决该问题。在用户机器上调用的副本会导致性能瓶颈(数据通过用户机器传输)。

有什么方法可以让所有目标机器都可以看到构建删除? 可能以某种方式将它们添加到受信任的位置或类似的东西?

提前致谢!

【问题讨论】:

    标签: windows powershell windows-xp remoting remote-access


    【解决方案1】:

    我找到了适用于我们环境的解决方案。

    在没有 Cred-SSP 的情况下,无法通过双跃点传输凭据,但您可以在没有第一跃点的情况下在目标机器上运行某些东西。

    最简单的方法是使用 psexec-s 标志(在系统帐户中运行远程进程),最终字符串是这样的:

    psexec \\someHost -s robocopy "\\stagingHost\Staging" "\\someHost\C$\Staging" /MIR
    

    你也可以用同样的方式启动一些 PS 脚本,只要确保远程机器上的script execution is allowed

    psexec \\someHost -s "\\stagingHost\Staging\Script.ps1" SomeArg1 SomeArg2
    

    查看this 文章,了解 psexec 的工作原理。 在 someHost 上服务时

    【讨论】:

    • +1。此外,通过在您创建并立即在目标计算机上运行的计划任务中执行此工作,也可以实现相同的效果。
    【解决方案2】:

    CredSSP 双跳问题的解决方案。

    从等式中删除用户的桌面。在您的构建服务器上设置适当的构建和部署服务器/服务/应用程序并从那里管理所有内容。 RedGate 有一个新产品可能会对您有很大帮助,Deployment Manager

    【讨论】:

    • 我们有数百个用例的非常复杂的自定义解决方案,所以我们不能转移到其他东西。我相信必须有解决办法。没有 CredSSP 就无法翻译用户帐户令牌。行。但必须有另一种方式。
    • 我同意。必须有更好的解决方案。我正在尝试使用 CredSSP 的 PowerShell 工作流,并且在使用 CredSSP 时,Restart-Computer 停止工作。真可惜,这种情况没有简单的解决方案
    【解决方案3】:

    如果您使用的机器可以访问其他机器,只需使用您的机器复制文件:

    $computers | % {copy '\\servershare\build' "\\$_\c`$\Temp"}
    $sb = {C:\Temp\Dosomething.txt args[0]}
    $computers | % {Invoke-command -comp $_ -scriptBlock $sb -argumentlist $arg} 
    

    【讨论】:

    • 我可以从我的机器复制文件,即使不将它们放置到临时文件夹,但在这种情况下,数据将从构建放置机器传输到用户机器,然后才到达目的地。因此,如果将用户机器放置在另一个本地网络中,则需要数小时,而直接复制只需五分钟。
    最近更新 更多