SSH 隧道:绕过防火墙访问远程内网服务
日常工作中常遇到这样的场景:能通过 SSH 连接远程服务器,但服务器防火墙只开放了 22 端口。此时若想访问远程服务器上的其他服务(如监听 8080 端口的 Web 应用),SSH 本地端口转发(-L)是首选方案。
一、原理
SSH 本地端口转发的核心是隧道:建立 SSH 连接后,在本地开启一个端口,该端口的流量通过 SSH 隧道转发到远程服务器的指定地址。
1 | |
由于所有流量都走 SSH 连接的 22 端口,防火墙只需放行 22 入站流量,无需开放其他端口。
二、基本用法
1 | |
示例:远程服务器 IP 1.2.3.4,目标服务 127.0.0.1:8080,本地用 8080 端口访问:
1 | |
保持终端连接,在浏览器访问 http://127.0.0.1:8080 即可。Windows 10/11 自带 OpenSSH,CMD 和 PowerShell 中用法相同。
三、常用场景
3.1 远程服务监听内网 IP
远程服务监听 192.168.1.100:8080(非 127.0.0.1):
1 | |
3.2 后台静默运行
添加 -fN 参数,无需保持终端开启:
1 | |
-f:后台运行-N:只建立隧道,不登录 shell
关闭后台隧道:
1 | |
3.3 允许同局域网其他人访问
默认只允许本机访问。添加 0.0.0.0 监听地址,可让同局域网其他设备通过本机 IP 访问:
1 | |
四、总结
SSH 本地端口转发只需一条 -L 命令,利用已建立的 SSH 连接访问远程任意内网端口(8080、3306、Redis 等均适用),无需修改防火墙规则,无需开放新端口。
如果这篇文章对您有帮助,欢迎打赏支持