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