使用 ssh -D
进行动态代理并在本地安装 Docker(通过 SOCKS5 代理)
前言
某些网络环境可能限制直接访问互联网资源。您可以使用 SSH 动态代理(SOCKS5 协议)来绕过这些限制,从而在本地计算机上安装 Docker 并下载 Docker 镜像。
环境准备
- 一台运行 Linux (Ubuntu) 的本地计算机
- 目标服务器已安装 SSH 服务,并能通过远程端口访问
- 本地计算机已安装 SSH 客户端
- Firefox 浏览器和 Auto Proxy SwitchyOmega 插件
1. 建立 SSH 动态代理
使用 ssh -D
命令在本地计算机上建立动态代理,并指定远程端口和密码:
ssh -D 8080 -p 22 username@remote_host
这里 8080
是本地代理端口,可以根据需要更改。-p 22
指定了远程 SSH 服务端口。username
是远程服务器的用户名,remote_host
是远程服务器的地址。
如果需要在命令中包含密码,建议使用 SSH 密钥认证或者 SSH 代理程序(如 ssh-agent
)来管理密码,以避免在命令行中直接输入密码的安全风险。
2. 配置 Firefox 使用代理
- 打开 Firefox 浏览器,进入插件管理页面,搜索并安装
Auto Proxy SwitchyOmega
插件。
- 安装完成后,点击 SwitchyOmega 图标,进入选项配置页面。
- 创建一个新的情景模式,命名为
SSH Proxy
。
- 在代理服务器设置中,选择
SOCKS5
,输入 127.0.0.1
作为主机,端口填写 8080
。
- 保存设置并应用
SSH Proxy
模式。
3. 配置 APT 使用代理
为了只影响 APT 命令的网络请求,可以通过配置 APT 使用 SOCKS5 代理来实现。
- 创建或编辑
/etc/apt/apt.conf.d/proxy.conf
文件:
sudo nano /etc/apt/apt.conf.d/proxy.conf
- 添加以下内容来配置 APT 使用 SOCKS5 代理:
Acquire::http::Proxy "socks5h://127.0.0.1:8080/";
Acquire::https::Proxy "socks5h://127.0.0.1:8080/";
- 保存并关闭文件。
4. 配置 curl
使用代理
为了让 curl
命令也通过 SOCKS5 代理,可以在执行 curl
命令时使用 --proxy
参数:
curl --proxy socks5h://127.0.0.1:8080 -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5. 通过代理安装 Docker
现在可以通过配置的代理来安装 Docker。
- 更新包索引:
sudo apt-get update
- 安装必要的依赖包:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 的官方 GPG 密钥:
curl --proxy socks5h://127.0.0.1:8080 -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加 Docker APT 源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 更新包索引:
sudo apt-get update
- 安装 Docker CE:
sudo apt-get install docker-ce
- 验证 Docker 是否安装成功:
sudo systemctl status docker
6. 配置 Docker 使用代理
为了让 Docker 在下载镜像时使用 SOCKS5 代理,需要配置 Docker 守护进程。
- 创建或编辑
/etc/systemd/system/docker.service.d/proxy.conf
文件:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/proxy.conf
- 添加以下内容来配置 Docker 使用 SOCKS5 代理:
[Service]
Environment="HTTP_PROXY=socks5://127.0.0.1:8080"
Environment="HTTPS_PROXY=socks5://127.0.0.1:8080"
保存并关闭文件。
重新加载系统守护进程并重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
7. 配置 Docker 用户组
为了无需 sudo
运行 Docker 命令,可以将用户添加到 Docker 组:
sudo usermod -aG docker ${USER}
重新登录以使更改生效:
su - ${USER}
验证用户是否可以无需 sudo
运行 Docker:
docker run hello-world
结论
通过以上步骤,您已经成功通过 SSH 动态代理在本地计算机上安装了 Docker,并配置 Docker 使用 SOCKS5 代理来下载镜像。使用 Firefox 插件 Auto Proxy SwitchyOmega 和配置 APT、curl
及 Docker 守护进程的代理,可以有效地绕过网络限制,访问必要的互联网资源,而不会影响本地其他网络工具和端口的正常工作。
希望这篇文章对您有所帮助。如果有任何问题或需要进一步的帮助,请随时联系。