小技巧:ssh启动端口转发ssh -N -L 18789:127.0.0.1:18789 user@host
在安装启动openclaw的时候,看到它提示用这句话实现远程的本地访问。
ssh -N -L 18789:127.0.0.1:18789 user@host参数解析
-
-N
不执行远程命令,仅建立纯隧道(节省资源,适合专用于端口转发)。 -
-L
启动本地端口转发(Local Port Forwarding)。 -
18789:127.0.0.1:18789- 第一个
18789:本地主机监听的端口 127.0.0.1:18789:远程主机(user@host)上待转发的目标服务地址(此处127.0.0.1是从远程主机视角解析)。
- 第一个
-
user@host
SSH 登录的远程主机凭证(用户名 + IP/域名)。
🛠️ 核心使用场景
场景 1:安全访问内网服务(如 OpenClaw Gateway)
- 问题:OpenClaw 默认绑定
127.0.0.1:18789,仅允许本地访问。 - 解决:
通过此命令将远程18789端口映射到本地,浏览器访问http://localhost:18789即可安全操作远程 OpenClaw 控制台。
场景 2:突破防火墙/访问隔离服务
- 访问远程主机 仅监听 127.0.0.1 的服务(如数据库、内部 API);
- 访问远程主机 内网其他机器 的服务(需调整目标地址为内网 IP)。
场景 3:加密敏感流量
- 在不安全网络中保护明文协议(如 HTTP、FTP),通过 SSH 隧道加密传输。
⚠️ 注意事项
- 保持连接:关闭 SSH 窗口会中断转发,需常驻后台(可用
tmux/nohup); - 权限配置:确保远程主机的
sshd_config启用AllowTcpForwarding yes; - 替代方案:
- 远程转发(
-R):将本地服务暴露给外网; - 动态代理(
-D):创建全局 SOCKS5 代理。
- 远程转发(
实践
服务器端为192.168.1.12 Ubuntu server
客户端为Windows10
服务端
修改配置
实际实践的时候,需要在服务器端的ssh打开转发:
修改这个文件/etc/ssh/sshd_config:
UsePAM yes AllowAgentForwarding yes把#AllowAgentForwarding yes改成AllowAgentForwarding yes
重启ssh服务:
sudo service ssh restart客户端
启动隧道
在客户端,执行这条命令
ssh -N -L 18789:127.0.0.1:18789 user@host浏览器浏览http://localhost:18789
这时候在客户端就可以直接用localhost连服务器端了
http://localhost:18789
本来openclaw只能本地访问,现在也可以远程访问了,只需要服务器端ssh打开了端口转发,客户端有ssh登录权限即可。