现在我在 Windows 浏览器里访问 127.0.0.1:3000,就能看到服务器上的 Grafana。刚开始很容易误以为 Grafana 安装在自己电脑上,实际上中间有一条 SSH 本地端口转发通道。
一条命令转发两个页面
在 Windows 终端执行:
ssh -N -L 3000:127.0.0.1:3000 -L 9090:127.0.0.1:9090 yuantyyuanty 是我本地 SSH 配置里的连接别名,其他人应替换为自己的别名或连接参数。-N 表示不运行远端命令,只维持连接;每个 -L 增加一个本地端口转发。
浏览器访问本机 3000 时,请求经加密隧道送到服务器的 127.0.0.1:3000。9090 同理,对应 Prometheus。终端没有出现命令提示符并不代表卡住,隧道正在工作;关闭连接以后这些入口也会失效。
两个 127.0.0.1 的区别
浏览器地址栏中的 127.0.0.1 指 Windows 自己。Grafana 数据源 URL 中的 http://127.0.0.1:9090 指运行 Grafana 的服务器,因为请求是 Grafana 服务端发出的。
因此看板能查询 Prometheus,并不要求浏览器也能直接访问服务器 9090。SSH 转发主要解决我进入管理页面的需求。
Connection refused 应该查哪里
如果 SSH 已连接,但出现 channel open failed: connect failed: Connection refused,通常是隧道目标端口没有服务监听、服务停止,或者目标地址端口写错。先在服务器检查:
systemctl status grafana-server prometheus --no-pager
ss -lntp | grep -E ':(3000|9090)\b'这与 SSH 登录认证失败是两类问题。不要看到这行就去重配密钥或开放公网端口。
如果提示 Address already in use,则先检查 Windows 本地端口是否被占用。可以只改左侧端口:
ssh -N -L 13000:127.0.0.1:3000 yuanty随后访问本机 13000,远端仍然是 Grafana 的 3000。
更清楚地发现隧道建立失败
可添加 -o ExitOnForwardFailure=yes,让本地转发绑定失败时直接退出。它不能证明远端应用始终健康,Grafana 后续停止时仍会连接失败。
本站管理服务监听回环地址,以 SSH 隧道访问。这样减少了公网直接暴露的管理入口,但 SSH 账号和 Grafana 登录凭据仍要妥善管理。理解流量实际走向以后,排查端口问题就不容易乱改了。
连接更稳的写法
可使用 ssh -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -L 127.0.0.1:3000:127.0.0.1:3000 -L 127.0.0.1:9090:127.0.0.1:9090 yuanty。显式绑定本机回环地址;保活失败会退出,但不会自动重连。ExitOnForwardFailure 主要检查本地转发建立失败,不能保证远端应用一直在线。关闭该 SSH 连接后,本地管理入口即失效。
内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
【测试交流|站长自有测试账号】这里两个 127.0.0.1 的解释很实用:浏览器地址指本地电脑,数据源地址指 Grafana 所在的服务器。排查隧道时,应该先分清是哪一端的端口没有监听。