Docker 通过代理的 SSH 远程上下文

发布: (2025年12月24日 GMT+8 06:26)
2 分钟阅读
原文: Dev.to

Source: Dev.to

概览

通过 Docker contexts 安全地在 SSH 上管理远程 Docker daemon,并将 SSH 流量通过 SOCKS5 代理转发。
通过为 SSH 配置代理并定义一个通过 SSH 访问远程主机的 Docker context,本地执行的 Docker 命令会透明地转发到远程 Docker daemon。这样,你可以像使用本地 daemon 一样使用标准的 Docker 工作流(docker psdocker composedocker build),同时受益于:

  • SSH 密钥认证
  • 代理强制(SOCKS5 或 HTTP)
  • 连接保活机制

SSH 配置

~/.ssh/config 中添加主机模式,使所有匹配的主机自动使用代理和保活设置。

# Apply to all hosts matching vps-*
Host vps-*
  ServerAliveInterval   10
  ProxyCommand nc --proxy-type socks5 --proxy 127.0.0.1:10808 %h %p

# Specific host for Docker access
Host vps-docker
  HostName 
  User 
  Port 
  PreferredAuthentications publickey
  • ServerAliveInterval – 定期发送数据包以保持 SSH 连接存活。
  • ProxyCommand – 强制 SSH 流量通过本地 SOCKS5 代理(例如 VPN 隧道)。
  • PreferredAuthentications publickey – 强制使用公钥认证而非密码认证。

Docker Context

创建一个通过 SSH 连接到远程 daemon 的 Docker context:

docker context create vps-docker-host --docker "host=ssh://vps-docker"

激活该 context:

docker context use vps-docker-host

在激活该 context 后,所有 Docker CLI 命令(docker psdocker composedocker build 等)都将针对远程 Docker daemon 而非本地 daemon 运行。

Back to Blog

相关文章

阅读更多 »