
当你在远程 Linux 服务器上部署了一个 Web 服务,比如监控面板、数据库管理工具或者自研的应用,它可能只监听服务器的本地回环地址(127.0.0.1)。如何直接从你的个人电脑安全、便捷地访问这些“藏”在服务器内部的服务呢?SSH端口转发正是为此而生的利器。
它通过在本地和远程服务器之间建立一条加密隧道,将本地端口的流量安全地转发到远程服务的端口上。下面分享两种最常用的方法:单一端口映射和动态代理。
一、单一服务:本地端口转发
如果你只需要访问远程服务器上的一个特定服务,本地端口转发是最直接的选择。它像是一座独木桥,只连接本地的一个端口到远程的一个服务端口。
1. 如何配置?
通过命令行配置非常简单,其基础语法如下:
ssh -L [本地端口]:[目标地址]:[目标端口] [用户名]@[远程服务器IP]
例如,你想把本地机器的 18789 端口映射到远程服务器(IP为your_server_ip)上监听 127.0.0.1:18789 的 OpenClaw 服务,可以使用 root 用户执行:
ssh -L 18789:127.0.0.1:18789 root@your_server_ip
这条命令执行后,只要 SSH 连接保持,转发就生效。
如果你使用的是 SecureCRT、Xshell 等图形化 SSH 客户端,配置同样直观。通常在“端口转发”或“SSH 隧道”设置中,点击“添加”规则,然后填写本地监听的端口,以及远程目标服务的地址和端口即可。

2. 如何访问?
配置完成后,访问就变得极其简单。打开你本地的浏览器,直接在地址栏输入 localhost:18789,你就能看到运行在远程服务器上的 OpenClaw 仪表盘了,感觉就像这个服务跑在你自己的电脑上一样。

这种方法完美解决了单一服务的访问问题,是日常 运维 和调试中的高频操作。如果你想深入了解更广泛的 网络 与系统管理技巧,可以参考社区的相关讨论。
二、多端口:使用 SOCKS5 动态代理
如果你需要访问服务器上多个不同端口的服务,甚至服务端口是动态变化的,一个个配置本地转发就太麻烦了。这时候,SOCKS5 动态代理是更高效的方案。
它相当于在你的本地建立了一个智能的代理服务器。所有发送到这个代理的请求,都会通过 SSH 隧道交由远程服务器去执行并返回结果。一个隧道,即可通行所有服务。
小提示:如果你有一台海外服务器,这个方法甚至可以让你无需额外购买 VPN 服务。
1. 如何配置?
命令行配置的语法更为简洁:
ssh -D [本地代理端口] [用户名]@[远程服务器IP]
例如,在本地 25555 端口启动一个 SOCKS5 代理,连接到远程服务器:
ssh -D 25555 root@your_server_ip
在图形化客户端(如 SecureCRT)中,你需要在端口转发设置里,勾选“动态转发”或“SOCKS”相关选项,并指定一个本地端口。

2. 如何访问?
代理配置好后,你的应用程序需要配置使用这个代理。
-
命令行工具(如 curl):可以直接通过 -x 参数指定代理。
C:\Users\P16>curl -x socks5h://127.0.0.1:25555 http://localhost:18789
-
浏览器访问:需要安装代理管理插件,比如 SwitchyOmega、FoxyProxy 等。在插件中新建一个情景模式,代理协议选择 SOCKS5,服务器地址填 127.0.0.1,端口填你刚才设置的 25555。

这里有个关键细节:如果你要访问的服务地址是 localhost、127.0.0.1 这类本地回环地址,它们默认可能会绕过代理。你需要在代理插件的“不代理的地址列表”中,添加特殊规则 < -loopback > 来排除回环地址,确保这些对“服务器本地”的请求也能通过代理发送出去。

完成以上配置后,你就可以在浏览器中轻松访问服务器上所有的 Web 页面了,无论是 OpenClaw 的仪表盘、HDFS 的管理界面,还是其他任何监听在 127.0.0.1 上的服务,都可以通过同一个代理隧道访问。

总结
本地端口转发和 SOCKS5 动态代理是 SSH 隧道技术的两种典型应用,它们基于 SSH隧道 为远程服务访问提供了安全、灵活的解决方案。前者适合固定服务的直达访问,后者适合多服务或动态端口的场景。掌握它们,能极大提升管理远程服务器的效率和便利性。如果你在实践过程中遇到其他有趣的用法或问题,欢迎到 云栈社区 与我们交流分享。