【问题标题】:Connecting to constrained endpoint failing in powershell在 PowerShell 中连接到受限端点失败
【发布时间】:2016-03-12 04:37:38
【问题描述】:

我正在测试虚拟机上使用受限端点并执行以下操作:

  • 已创建 TestUser 本地帐户(仅属于用户组)
  • 运行以下内容:

    New-PSSessionConfigurationFile -Path c:\test.pssc -ModulesToImport smbshare -PowershellVersion 3.0 -VisibleFunctions 'get-smbshare' -SessionType RestrictedRemoteServer

  • 注册端点使用:

    Register-PSSessionConfiguration -Path c:\test.pssc -Name test -ShowSecurityDescriptorUI -AccessMode remote -RunasCredential Administrator

  • 尝试使用以下方式连接到它:

    Enter-PSSession -ComputerName localhost -ConfigurationName test -Credential TestUser

我经历了一切,直到连接尝试为止。它说访问被拒绝。 PS shell 以管理员身份运行。根据 remote_troubleshooting 文档,我已授予 TestUser 对端点的读取和执行权限。如果我在没有凭据参数的情况下运行命令或传入管理员用户名,它连接正常......我在这里错过了什么?

【问题讨论】:

  • 您能否检查您的问题是否有错别字,例如Register-PSSessionConfiguration - patch c:\test.pssc;看起来应该是-Path。它确实有助于防止混淆或猜测。
  • 在您显示使用-Credential-RunAsCredential 的示例中,用户名只是一个字符串。我希望您提供一个 PSCredential 对象(即作为变量,通过$cred = Get-Credential 获得)。如果您希望(仅)将用户名作为字符串提供,也许这就是它不起作用的原因;当您不指定该开关时,它只会获取当前用户的凭据。
  • 啊谢谢。我明天会测试一下并报告。至于您的第一条评论,是的,我使用的是-Path
  • @CharlieJoynt 所以我通过创建两个变量 $admincred 和 $usercred 来测试您的建议,这两个变量都设置为 get-credential。在建立连接的命令中,我传入了这些对象,现在我得到一个奇怪的错误......“无法执行操作,因为操作“SetLocation”无效。删除操作“SetLocation”,或调查为什么它无效“ ..google 到目前为止还没有被证明是有用的。不知道你以前是否遇到过这种情况。

标签: powershell powershell-remoting


【解决方案1】:

我刚刚整理完如何让本地管理员帐户与远程会话一起工作。

  1. 我不得不使用“协商”的身份验证机制。 Kerberos 是默认的身份验证机制,但它不适用于本地帐户。

  2. 必须将目标计算机添加到工作站上的 WinRM 受信任主机。这似乎是使用 Negotiate 而不是 Kerberos 的结果。

  3. 必须将本地帐户添加到目标计算机上的本地组 WinRMRemoteWMIUsers_ 的本地组中。

在这种情况下,会话需要以提升的权限运行,我必须将 DWORD 注册表子项“LocalAccountTokenFilterPolciy”添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,值为 1 以允许创建对远程使用的本地帐户具有提升权限的安全令牌。由于您使用的是委托会话,因此您可能不需要这样做。

【讨论】:

  • hmmm,我只是使用 localhost 作为“远程处理”的测试,但我做了你建议的更改,使用 Set-item wsman:\localhost\client\ 将计算机添加到 winRM 受信任主机列表trusthosts -value localhost,将本地用户添加到 WinRMRemoteWMIUsers_ 组...创建了一个新端点,尝试使用本地用户帐户凭据连接到它,但我仍然遇到上面相同的错误...也许我做错了什么。在域上,访问被拒绝,在域外,我收到 SetLocation 错误。
  • 在尝试连接时,我正在使用 -authentication 参数并传入 Negotiate
  • 你是在同一台机器上做所有这些吗?
  • 是的,如果我删除 -credentials 参数或者如果我传入具有管理员权限的用户,它会起作用,只是在我使用没有提升权限的帐户进行测试时不起作用。当我阅读这些命令的文档时,它说如果您授予本地用户帐户读取和执行权限,您应该能够将访问权限委托给该用户以运行会话配置文件中的命令。
  • 那么我不能保证我发布的信息很有帮助。它没有在那个环境中测试。
猜你喜欢
  • 2015-10-03
  • 2020-04-18
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2019-05-04
  • 1970-01-01
相关资源
最近更新 更多