You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:39:51