由于不忍心家里的电脑一直闲着,所以打算把家里的电脑作为一台服务器供平时折腾用。家里的电脑通过路由器可以访问外网,但是一到公司就没辙了。我想在任何时间任何地点都可以连到家里的电脑,基于这种需求我开始琢磨怎么才能实现这种功能。原本是准备自己写一个socket代理程序部署到公网服务器上,虽然性能会差点,但也能将就着用,写到一半突然想起SSH貌似有这个功能(白白浪费了半天时间)。
首先需要一台有公网ip的服务器,如阿里云,腾讯云等(半年前5毛钱买的阿里云终于派上用场了)。
1. 在家里的电脑(host1)上执行
ssh -fCNR host1_port:localhost:host0_port host0_user@host0_ip
例如:ssh -fCNR 22:localhost:8000 zhangsan@268.57.66.xx
表示把host0的8000端口请求转发到host1的22端口(相当于在host0的8000端口开了个网络服务)
2. 在阿里云(host0)上执行
ssh -fCNL *:host0_port1:localhost:host0_port2 localhost
例如:ssh -fCNL *:8001:localhost:8000 localhost
表示把host0的8001端口的请求转发到8000端口
只要你访问host0的8001端口,就相当于访问host1的22端口,如此便可以在任何地方通过host0间接的访问家里的电脑了