ssh反向代理实现科学上网

2023/7/18

# ssh反向代理

适用场景

  • 内网服务器无法访问github,而本地电脑可以科学上网,故内网服务器发起的请求通过本地电脑代理访问。
  • 跳板机,如只能访问内网某台机器,可以设置转发到其他内网机器的22端口进行登录。

原理

  • 在内网服务器上起一个端口,设置内网服务器访问外网的请求走这个端口进行代理

  • 内网服务器代理端口的请求,全部转发到本地电脑的科学上网工具上。

实现

通过ssh反向代理来完成上述需求,无需使用root权限。

如:

ssh -p 8222 -qngfNTR 8888:localhost:8765 rd@10.33.5.83
# 命令在client上执行,会在server上起一个8888端口,server上的服务代理到8888端口进行科学上网
# 使用rd用户连接server(10.33.5.83)的8222(因服务器22端口无法直接访问,iptables将8222转发至22)端口,将server(10.33.5.83)的8888端口转发到client的8765端口,这样10.33.5.83通过设置代理到127.0.0.1的8888即可通过client的8765端口进行代理。
-q: 静默模式,不显示任何警告或错误信息。
-n: 不执行远程命令。
-g: 允许远程主机连接到本地转发的端口。
-f: 在后台运行SSH会话。
-N: 不执行远程命令。
-T: 不分配伪终端。
-p: 指定ssh端口,不指定默认22
1
2
3
4
5
6
7
8
9
10

在设置git代理即可

#git操作
# 使用socks5代理git请求
git config --global https.proxy socks5://127.0.0.1:8888
# 取消全局代理
git config --global --unset https.proxy 
1
2
3
4
5

# 参考

Last Updated: 2023/9/10
只爱西经
林一