Docker Windows容器间PowerShell远程连接访问被拒求助
解决Windows容器间PowerShell远程连接的权限拒绝问题
看起来你已经搭好了基础的PS Remoting环境,但遇到了权限拒绝的问题。结合你的配置,我梳理了几个关键的遗漏点,帮你解决这个问题:
1. 补充WinRM服务端的核心配置
你的Dockerfile只配置了客户端的TrustedHosts,但WinRM服务端默认限制较多,比如不允许非加密连接、未开启必要的认证方式。修改你的Dockerfile,添加以下服务端配置:
FROM microsoft/windowsservercore:latest # 配置客户端信任所有远程主机 RUN winrm s winrm/config/client @{TrustedHosts="*"} # 配置WinRM服务端:允许非加密连接、开启Basic认证、监听所有地址(测试场景下使用) RUN winrm set winrm/config/service @{AllowUnencrypted="true"} RUN winrm set winrm/config/service/auth @{Basic="true"} RUN winrm set winrm/config/service @{ListenOn="*"} # 设置测试用管理员密码 RUN net user Administrator 1234!password5678 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # 启用PS远程并启动服务 RUN Enable-PSRemoting -force; if ($?) {Start-Service winrm} # 保持容器运行 CMD start-sleep -seconds 3600
2. 修正PSSession创建命令的细节
你之前的命令里犯了一个容易忽略的错误:两个容器是独立的Windows实例,testserver容器里的Administrator是本地账户,不需要加testserver\前缀。同时建议显式指定端口和认证方式,修改后的命令如下:
PS C:\> $pw = ConvertTo-SecureString "1234!password5678" -AsPlainText -Force PS C:\> $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "Administrator", $pw PS C:\> $session = new-pssession -computername testserver -port 5985 -credential $cred -Authentication Basic
3. 可选:验证WinRM服务状态
如果修改后仍有问题,可以进入testserver容器执行以下命令,确认服务是否正常监听:
# 检查WinRM服务状态 Get-Service winrm # 查看WinRM监听器配置 winrm e winrm/config/listener
确保监听器存在,且监听地址为*或容器的实际IP。
完成以上修改后,重新构建镜像、重启容器,应该就能成功建立PS远程会话了。
内容的提问来源于stack exchange,提问作者Moerwald
相关产品推荐
相关产品推荐

