SSH 本地端口转发命令详解
在安装启动 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,客户端为 Windows 10。
服务端
修改配置
实际实践的时候,需要在服务器端的 ssh 打开转发:
修改文件 /etc/ssh/sshd_config:
UsePAM yes
AllowAgentForwarding yes
把 #AllowAgentForwarding yes 改成 AllowAgentForwarding yes。
重启 ssh 服务
sudo service ssh restart


