使用ssh的隧道功能,进行端口转发。假设当前场景有三台主机:
| 主机名 | 说明 |
|---|---|
| localhome | 在局域网内的主机 |
| yun | 在公网上有公网IP的云主机 |
| mbp | 一台苹果笔记本 |
如果想从 mbp 通过ssh任意访问localhome,则需要经过yun。
部署流程
在 yun 上
运行
ssh -o ServerAliveInterval=30 -fCNL "*:8022:localhost:8020" localhost
该命令将8022端口上的数据,转发到本地的8020端口上。
同时需要在云主机的安全组或者防火墙上打开8022和8020端口。
在 localhome 上
运行
autossh -o ServerAliveInterval=30 -fCNR 8020:127.0.0.1:22 user@yun_ip
该命令建立了yun的8020端口到localhome的22端口的隧道。
以上命令均通过
-o设置了心跳,以免长时间无响应而断开。
SSH 登陆
最后mbp直接通过以下命令登陆localhome
ssh yun_ip -p 8022
这个访问数据流为 yun:8022 -> yun_ip:8020 -> localhome:22
开机启动
将上述连两条命令分别添加到各自的/etc/rc.local中即可。