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

 

       在内网工作,有时候会出现这种情况。我的电脑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的上网。

你可能感兴趣的:(linux,网络,python,ssh,运维)