guidepostSSHTunnel端口转发网上有帖子提到SSHTunnel与端口转发不同。我还没有在这里研究这两个术语的细节。区别,在结果上,这个知识点我是通过SSHTunnel这个词介绍的,但是实现的效果和“端口转发”很像,所以还是全部记下来吧。适用场景您想在自己的电脑本地启动服务,让互联网把对服务器的请求发送到自己的电脑上,这样调试更方便。这种debug模式只在特殊情况下使用:比如强制固定IP等,并不通用。网上的教程大多是将端口映射到局域网中的某个设备,应该是运维从业者的。作为开发者,本博客的简化场景是将服务器的端口映射到自己的电脑上。环境Linux、windows、Mac都可以参考博客。不知为何,参考博客被和谐了……背景最近因为工作原因,接手了一个微信相关的项目♂。项目部署后,发现功能无法完全跑通,需要断点查看问题出在哪里。由于开发涉及到微信公众平台,需要将ip加入白名单,所以需要一个“固定IP”,并且由于项目的部分模块需要使用https,所以在本地搭建https更方便.以上两个原因让我选择使用端口映射。执行ssh-p22-iNAME.pem-N-R0.0.0.0:8080:127.0.0.1:8080USER@IP嗯,就这么简单,一条命令就够了...NAME.pem:pem文件,记得索引pem文件的执行路径,或者写成pem的绝对路径。如果使用账号密码登录,去掉-iNAME.pem,输入命令后会要求输入密码,效果是一样的USER:登录服务器用户名,如:rootIP:server'spublicnetworkIPaddressRemarks一般博客都会讲-L-D,但是由于我的场景不会用到这两种模式,这里就不介绍了。为了从微信服务器获取token,不一定要使用固定IP的服务器。其实把个人电脑的临时IP加入微信IP白名单也可以得到token,但是缺点是动态IP会变,所以IP变化的时候需要更换,比较麻烦。后记当我使用端口映射时,我遇到了另一个问题。端口映射可以将服务器某个端口接收到的所有服务都映射到本地计算机,但是如何控制本地计算机的所有请求都到服务器呢?我们都知道,在本地发起网络请求时,发起请求的端口并不是完全可控的。所以,即使使用端口映射,也无非是实现了一个agent听到什么就告诉我,而我还是要直接和外人对话的情况,如下图。如果我想做“幕后老板”,完全通过经纪人完成转型怎么办?我们唯一需要做的就是让个人电脑发起的所有请求都通过固定ip的云服务器完成。推荐使用“TinyProxy”等工具,但由于某些原因,这里不再介绍。有兴趣的读者可以自行查看Documentation实现。当设置好端口映射和TinyProxy后,ECS就会成为我们PC上网的代言人,也就是达到下图所示的效果。他也成了“幕后老板”。获取更多海瑟姆原创文章,请关注公众号“许巨龙”:
