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

通过SSH执行docker-compose pull失败,本地执行正常求助

解决Windows Docker Desktop SSH远程执行docker-compose pull的凭证错误

这个问题是Windows下Docker的凭证存储机制和SSH远程会话的冲突导致的:本地登录时,Docker依赖Windows Credential Manager保存的凭证,且需要用户的活跃桌面会话权限;而SSH远程连接属于非交互式的独立会话,无法访问当前用户的凭证会话,所以拉取需要认证的镜像时就会报A specified logon session does not exist错误,其他不需要凭证的Docker命令(比如docker ps)则不受影响。

下面是几个可行的解决方法:

方法1:手动在config.json中配置凭证(推荐,一劳永逸)

  1. 在Docker Hub账号的「Security」设置里生成一个个人访问令牌(权限选拉取镜像所需的即可)
  2. 打开PowerShell,执行命令生成用户名+令牌的Base64编码(替换成你的实际信息):
    [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("你的Docker用户名:生成的访问令牌"))
    
  3. 在笔记本的用户目录下找到C:\Users\<你的用户名>\.docker\config.json,如果没有就新建这个文件
  4. 把以下内容写入config.json(替换<生成的Base64字符串>):
    {
      "auths": {
        "https://index.docker.io/v1/": {
          "auth": "<生成的Base64字符串>"
        }
      }
    }
    

之后不管是本地还是SSH远程执行docker-compose pull,都会直接读取这个文件里的凭证,绕过Windows Credential Manager。

方法2:远程SSH会话中重新登录Docker(临时方案)

每次通过SSH连接到笔记本后,先执行:

docker login

输入你的Docker用户名和访问令牌(或密码),登录成功后再执行docker-compose pull即可。这个方法的缺点是每次远程连接都要重复登录。

方法3:修改SSH服务权限(不推荐,有安全风险)

如果不在意安全问题,可以让SSH服务访问用户的桌面会话:

  • 打开services.msc,找到「OpenSSH SSH Server」服务
  • 右键选择「属性」,切换到「登录」选项卡
  • 选择「本地系统账户」,勾选「允许服务与桌面交互」
  • 重启SSH服务
    这样SSH会话就能访问Windows Credential Manager里的凭证,但这种做法会降低系统安全性,不建议在生产环境使用。

内容的提问来源于stack exchange,提问作者Nulk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:47:56