欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

让不能上网的机器借能上网的机器上网

程序员文章站 2022-06-02 20:16:07
...

 

       在内网工作,有时候会出现这种情况。我的电脑A能够上网,但是我通过ssh连接到的另一台机器B却不能上网。这种情况造成的后果就是,如果我需要在机器B上安装软件,往往不能通过连网的方式安装,只能通过机器A下载好源码,然后放到机器B下编译安装。显得很慢,如果需要安装的软件很琐碎,那基本要奔溃~~

 

      正在烦恼时,同事告诉我有很好的方法可以解决我的烦恼,于是觉得应该记录下来,以后也好回看。

 

      首先在A机器上,用pip安装proxy.py

pip install proxy.py

然后,运行:

proxy --hostname 127.0.0.1

outputs:
2020-09-04 20:09:03,722 - pid:1499979 [I] load_plugins:534 - Loaded plugin proxy.http.proxy.HttpProxyPlugin
2020-09-04 20:09:03,723 - pid:1499979 [I] listen:61 - Listening on 127.0.0.1:8899
2020-09-04 20:09:03,801 - pid:1499979 [I] start_workers:84 - Started 48 workers

这行命令的作用,是监听本地8899端口,如果8899端口有网络请求过来,则将其转给本地的http代理。

 

接下来,我们需要在本机A和机器B之间建立反向连接,这样就可以将B机器的网络请求转发给机器A的8899端口,从而可以使得机器B能够通过机器A上网:

ssh -R  127.0.0.1:8899:127.0.0.1:8899  remote_machine_B

其中remote_machine_B是机器B的HostName,需要在~/.ssh/config文件中配置。不熟悉ssh使用的童鞋可以自己找些资料学习。

 

然后,我们利用ssh,通过机器A登录到机器B上,配置一下http和https的环境变量:

export http_proxy=http://127.0.0.1:8899
export https_proxy=http://127.0.0.1:8899

之后,我们就可以直接在机器B将网络请求转发给机器A,从而实现机器B的上网。