双跳访问复制文件没有CredSSP

你好,

我们拥有数百个虚拟机的大环境。 在我们的服务部署过程中,我们需要将一些文件从build drop复制到所有这些机器上。

所以,我们有:

  • 用户机器,执行部署脚本
  • build立放置机器,文件在哪里
  • 目标机器

Powershell被用作脚本语言。 就像是:

$buildDrop = "\\sourceMachine\Build" $machineTarget = "targetMachine" Invoke-Command -ComputerName $machineTarget -ArgumentList $buildDrop -ScriptBlock { Param( $buildDrop ) Test-Path $buildDrop # Will return False } 

这种方法导致双跳问题 ,由于CredSSPfunction,XP和2k3机器不支持这个问题 ,所以我无法解决这个问题 。 并且在用户机器上调用的复制导致性能瓶颈(数据通过用户机器)。

有没有办法让所有目标机器始终可见的build立下降? 可能会以某种方式将它们添加到受信任的位置或类似的东西?

提前致谢!

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

没有Cred-SSP的情况下,不能通过双跳传输凭证,但是可以在目标机器上运行一些没有第一跳的凭证。

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

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

你也可以用同样的方法启动一些PS脚本,只要确保在远程机器上允许脚本执行 :

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

检查这篇文章,了解psexec如何工作。 服务于某些主机

CredSSP 双跳问题的解决方案。

从等式中删除用户的桌面。 在您的构建服务器上建立一个适当的构建和部署服务器/服务/应用程序,并从那里管理所有的东西 RedGate有一个新的产品,可能会帮助你很大程度上, 部署经理

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

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