首页 > 解决方案 > vNext 解决非域机器上的第二跳问题

问题描述

我已经向 Microsoft 开发人员社区提出了这个问题,但我没有取得太大的成功。

我正在尝试使用 vNext 构建定义创建一些自动化测试,其中构建代理 RemotePSSession 进入非域虚拟机(测试机器)并运行可以采用多个参数的批处理文件。此批处理文件可以读取(安装程序文件)或写入(报告)到域上的网络共享。我遇到的问题是第二跳问题。这是一篇关于它的文章:https ://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/

在我的实例中,PowerShell 远程会话无法通过我们之前在测试机器中验证的凭据来访问网络共享的资源。我们已尝试在代理和测试机器上使用 CredSSP 身份验证来启用访问,但失败了。Net Use 和其他调用域资源的命令也失败了。我们甚至尝试在 Target Machines 任务上修改自定义任务 PowerShell,但运气不佳。

根据我们的发现,无法使用 RemotePSSession 访问具有以下拓扑的域网络共享:服务器 A(在域或工作组中)⇒ RemotePSSession + CredSSP 进入服务器 B(非域),使用本地管理员服务器 B 帐户 ⇒ 调用网络共享,使用某些域帐户使用 Net Use。

似乎第二跳仅适用于加入域的机器(我们也一直在使用 CredSSP 对其进行测试)。

让我们知道是否有我们可以实施的解决方案或解决方法。

他们的回答是 >>如果您可以确定方法正确并且问题是由 DevOps 引起的,我们将很乐意帮助您解决有关 DevOps 的问题。以下是一些可能有用的文档:https ://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/ps-remoting-second-hop?view=powershell-6 。

我以前看过这个文档,但我没有取得太大的成功,还有其他人有什么建议吗?

这是一个代码片段:

#serverA - local machine
#serverB - $remoteServer
#serverC - DFS namespace server

$session = New-PSSession -ComputerName $remoteServer -Credential $credential -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) -Authentication Credssp

$scriptBlock_runFile = {
    #Scenario 0 which works:
    #ipconfig

    #Scenario 1 which doesn't work:
    #& dir \\contoso.com\departments\folder"

    #Scenario 2 which doesn't work:
    #& net use x: \\contoso.com\departments\folder /user:CONTOSO\user "password"
}

Invoke-Command -Session $session -ScriptBlock $scriptBlock_runFile

标签: powershellpowershell-remoting

解决方案


推荐阅读