ssh 代理转发,让服务器上外网
由于是自己的电脑充当代理,所以需要用 -R 选项。
ssh -N -n -R 0.0.0.0:11625:127.0.0.1:12341 服务器
这是将远程的一个端口连到本地的端口。-N 表示不要执行命令,仅仅转发端口。-n 表示将 stdin 重定向到 /dev/null。
但是如果想要把这个代理用到 docker 构建中,又会有一点问题。因为 docker 容器本身有不同的网段,不能写 localhost,而是要写 host 的 ip。
sshd_config 里要打开
AllowTcpForwarding选项,否则-R远程端口转发会失败。默认转发到远程主机上的端口绑定的是 127.0.0.1,如要绑定 0.0.0.0 需要打开 sshd_config 里的
GatewayPorts选项。这个选项如果由于权限没法打开也有办法,可配合ssh -L将端口绑定到 0.0.0.0。
改完记得用 systemctl 重载配置。(不清楚 daemon-reload 是不是必须的)
然后 docker 构建时要显式传入参数:
docker build . \
--build-arg HTTP_PROXY=http://192.168.236.148:11625 \
--build-arg HTTPS_PROXY=http://192.168.236.148:11625