由于不忍心家里的电脑一直闲着,所以打算把家里的电脑作为一台服务器供平时折腾用。家里的电脑通过路由器可以访问外网,但是一到公司就没辙了。我想在任何时间任何地点都可以连到家里的电脑,基于这种需求我开始琢磨怎么才能实现这种功能。原本是准备自己写一个socket代理程序部署到公网服务器上,虽然性能会差点,但也能将就着用,写到一半突然想起SSH貌似有这个功能(白白浪费了半天时间)。
首先需要一台有公网ip的服务器,如阿里云,腾讯云等(半年前5毛钱买的阿里云终于派上用场了)。
- 在家里的电脑(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端口开了个网络服务)
- 在阿里云(host0)上执行
ssh -fCNL :host0_port1:localhost:host0_port2 localhost
例如:ssh -fCNL :8001:localhost:8000 localhost
表示把host0的8001端口的请求转发到8000端口
只要你访问host0的8001端口,就相当于访问host1的22端口,如此便可以在任何地方通过host0间接的访问家里的电脑了
1、ssh参数
-f:ssh客户端在后台执行
-C:压缩数据传输
-N:不执行脚本或命令,仅进行端口转发
-L:做本地映射端口,被冒号分割的三个部分含义分别是
-R:做远程端口映射,与-L互斥
-g:在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
