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

通过SSH隧道转发docker.sock返回“page not found”,无法访问远程容器

解决SSH转发Docker套接字后VSCode无法访问远程容器的问题

先给你澄清个关键点:访问http://localhost:23750/返回{"message":"page not found"}其实是正常现象——Docker的HTTP API根路径本来就没有提供内容,你可以试试访问http://localhost:23750/containers/json,如果能返回远程服务器上的容器列表,说明套接字转发已经生效;要是返回错误,那咱们先解决转发环节的问题。

接下来针对VSCode识别不到远程容器的情况,一步步来排查:

1. 先确认套接字转发真的能用

在本地Windows终端执行这个命令,验证连通性:

curl http://localhost:23750/containers/json
  • 如果返回远程容器的JSON列表,说明转发没问题,问题出在VSCode的配置或扩展上;
  • 如果报错,优先解决转发问题:
    • 检查远程用户权限:你的远程user必须属于docker组,在远程服务器执行groups user查看,没在组里的话用sudo usermod -aG docker user添加,之后重新登录SSH;
    • 开启SSH调试模式:把你的SSH命令改成ssh -v -nNT -L localhost:23750:/var/run/docker.sock user@remote_server,查看转发过程中是否有权限或连接类错误;
    • 更换端口测试:用netstat -ano | findstr :23750检查端口是否被占用,换成23751这类未占用的端口重新转发。

2. 调整VSCode的Docker配置

  • 打开VSCode设置(快捷键Ctrl+,),搜索docker.host,确保配置为tcp://localhost:23750,注意不要加http://前缀;
  • 关闭Docker Desktop干扰:如果你的Windows上安装了Docker Desktop,它可能会抢占本地Docker连接资源,先关闭它,或者在Docker Desktop设置里禁用“Expose daemon on tcp://localhost:2375 without TLS”;
  • 重载VSCode扩展:按Ctrl+Shift+P打开命令面板,输入Extensions: Reload Window重载窗口,或者直接重启VSCode,确保配置修改生效。

3. 用Docker CLI测试本地连接

在本地Windows终端执行:

docker -H tcp://localhost:23750 ps

如果能列出远程容器,说明Docker客户端已成功连接远程套接字,此时VSCode应该能识别到这些容器;如果这个命令报错,先解决CLI的连接问题(比如是否存在TLS配置干扰,不过套接字转发一般不需要TLS)。

4. 检查远程SSH配置细节

  • 确认远程服务器的sshd_config中AllowStreamLocalForwarding确实设置为yes,并且修改后重启了sshd服务(sudo systemctl restart sshd);
  • 核对套接字路径:部分服务器的docker.sock可能在/run/docker.sock,先在远程服务器执行ls -l /var/run/docker.sock确认路径存在,不存在的话替换为正确路径。

一般按这个流程排查,要么是权限未配置到位,要么是VSCode配置未生效,很快就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:24:22