通过ssh做内网穿透,替代TeamViewer等远程桌面

背景

公司为了安全很多服务放在内网中,导致开发只能在公司网络环境下进行.导致有些问题无法及时处理,其中两个同事的解决方案是 TeamViewer 远程到自己电脑的方式实现,

方案一

似这样的远程桌面,利弊是很明显的

利: 开发环境就是公司主机与工作环境完全一致,环境导致部分服务无法使用或开发环境导致的问题少。
弊: 因为远程桌面传输了大量图像界面的数据还有网络延迟导致远程开发卡顿,从而开发体验不如本机开发,还有就是无法分享多人使用.

最后我选用比较熟悉和简单的ssh内网端口映射至外网的方式,需要自己有云服务器

最后对svn,git,ssh 等服务采用直接端口映射的方式,这个方式的缺点就是安全性和服务网络端口变化需要做相应配置调整.
ssh做好无密码登陆后的主要命令是:

1
ssh -fNR <外网端口>:<内网ip>:<内网端口> root@<外网ip>

为了连接稳定一般把ssh 换为autossh

需要注意外网主机sshd配置中GatewayPorts 为true,否则开启的端口只有外网主机可访问,自己的工作机无法访问.

通过以上方式基本上实现了可以在家办公。

方案二

对svn,git,ssh 等映射配置,在服务器多环境复杂时会增加配置的工作量。最后还是换为远程桌面了,不过是用windows自带的远程桌面,通过ssh将3389端口映射出去,相比TeamViewer等更安全,不用注册账号。windows自带的远程桌面似乎也是差异更新画面的,并不怎么卡。