用autossh工具进行内网穿透
1. 工具介绍
该工具的起初灵感和机制来自于 rstunnel。
autossh 工具是一个用来启动 ssh 服务并进行监控的命令行应用程序,可以在程序问题或者是网络问题的时候,重启 ssh 服务。
- 在 autossh 1.2 的时候,其方法已经改变了:autossh 使用 ssh 来构造一个 ssh 重定向循环(本地到远程和远程到本地),然后发送测试数据并获得返回结果。
- 在 autossh 1.3 增加了一个新的方法:可指定远程 echo 服务的端口用于返回测试数据发送结果。这个避免握手阶段以及所有远程机器端口的冲突问题,而老的 loop-of-forwardings方法依然可用。
内网主机主动连接到外网主机,又被称作反向连接(Reverse Connection),这样 NAT 路由/防火墙就会在内网主机和外网主机之间建立映射即可相互通信了。但这种映射是路由网关自动维持的,不会持续下去,如果连接断开或者网络不稳定都会导致通信失败,这时内网主机需要自动重连机制了。
- # 安装方式
- $ yum install autossh
- $ apt install autossh
2. 使用方式
autossh 使用了系统原生的 SSH 端口映射功能,性能开销非常小。
- 命令使用方式
- # autossh usage
- autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS]
- 命令使用参数
编号 | 参数 | 含义说明 |
---|---|---|
1 |
-M |
用于有问题时就会自动重连;服务器 echo 机制使用的端口 |
2 |
-D |
本地机器动态的应用程序端口转发 |
3 |
-R |
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 |
4 |
-L |
将本地机(客户机)的某个端口转发到远端指定机器的指定端口 |
5 |
-f |
后台运行 |
6 |
-T |
不占用 shell |
7 |
-n |
配合 -f 参数使用 |
8 |
-N |
不执行远程命令 |
9 |
-q |
安静模式运行;忽略提示和错误 |
- 命令使用演示
- # 本地端口绑定(在host1服务器上面运行)
- # 将所有发送到本机的8527端口的所有数据转发到远程主机的8000端口
- $ ssh -vv -N -D localhost:8527 [email protected] -p 8000
- # 主要是为了更新安全的运行ssh服务
- $ autossh -M 5678 -vv -N -D localhost:8527 [email protected] -p 8000
3. 示例演示
SSH 仅支持 TCP 端口映射!
如果需要映射的端口不多,只有几个的话,autossh 确实是最佳选择。但是如果需要映射大量端口,建议还是使用类似 Ngrok 的端口映射工具,毕竟这类工具拥有比较完善的管理功能。