使用Invoke-Command访问localhost时为何出现权限拒绝?
问题原因:Kerberos双跳限制
核心逻辑
你遇到的是典型的Kerberos双跳(Double Hop)权限限制:
- 当你通过
Invoke-Command连接到localhost时,$creds的凭据只能在这第一台机器(localhost)的会话里生效。当你在这个会话里尝试访问\\remotehost\C$\temp,相当于要把凭据从localhost传递到remotehost——也就是"第二跳",但Kerberos默认禁止这种跨机器的凭据传递,所以触发权限拒绝。 - 而直接连接到
remotehost执行命令时,会话本身就在目标机器上,访问\\remotehost\C$\temp其实是访问本地共享(哪怕写的是UNC路径,系统会自动识别为本地资源),不需要跨机器传递凭据,自然能通过权限验证。
验证环节的合理性
你之前验证Test-Path -Path C:\temp能成功,是因为这个操作完全在localhost的会话内完成,没有跨机器的凭据传递需求,所以$creds的权限可以正常发挥作用。
可选解决思路
如果需要从localhost直接访问remotehost的共享,得配置Kerberos约束委派,允许localhost的计算机账户或用户账户将凭据委派给remotehost的CIFS(文件共享)服务。
内容的提问来源于stack exchange,提问作者dokaspar
相关产品推荐
相关产品推荐

