SSH 反向隧道 + Claude MCP SSH 服务接入完整部署文档

整体流程梳理

  1. 本地 PC 发起反向 SSH 隧道,打通外网服务器端口 ↔ 内网网关 SSH
  2. 验证隧道连通性,配置 SSH 免密登录
  3. Claude MCP 接入 SSH 远程服务器,实现远程命令执行
  4. 额外接入 Playwright MCP,附带浏览器自动化能力
  5. 主要是排查web错误,然后自动修改js,修复bug

环境准备

组网环境

设备 IP 地址 说明
远端服务器 172.16.13.128 反向隧道服务端
本地 PC 网卡 1:172.16.13.31;网卡 2:192.168.0.99 双网卡发起隧道
内网网关 192.168.0.8:22 目标被 SSH 访问机器

网络拓扑

建立 SSH 反向远程端口转发隧道

隧道启动命令说明

本地 PC 执行,将远端服务器172.16.13.128的 10400 端口反向映射到内网网关192.168.0.8:22

ini 复制代码
ssh -R 10400:192.168.0.8:22 -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=no lbt@172.16.13.128

参数解释:

  • -R 10400:192.168.0.8:22:远端机器监听 10400 端口,流量转发至内网网关 22 端口
  • -N:仅建立隧道,不打开远程 Shell 终端
  • 心跳保活:30s 发送一次心跳,连续 3 次失败自动断开重连
  • StrictHostKeyChecking=no:首次连接自动信任主机密钥,无需交互确认

隧道连通性验证

服务器上验证执行,通过隧道访问内网网关 SSH:

css 复制代码
ssh -p 10400 root@127.0.0.1 'echo tunnel_ok && uname -a'

输出tunnel_ok+ 系统内核信息即代表隧道通畅。

免密 SSH 密钥推送

把本地公钥推送至隧道后的网关 root 账号,后续 MCP 免密登录:

css 复制代码
ssh-copy-id -p 10400 root@127.0.0.1

Claude MCP 服务配置

安装ssh-mcp-server

配置 SSH MCP 服务(已安装了ssh-mcp-server,未安装请跳过)

如果已经安装了ssh-mcp-server,可直接粘贴至 Claude MCP 配置文件:

perl 复制代码
{
    "mcpServers": {
        "ssh-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "@fangjunjie/ssh-mcp-server",
                "--host", "127.0.0.1",
                "--port", "10400",
                "--username", "root",
                "--privateKey", "~/.ssh/id_ed25519",
                "--pre-connect"
            ]
        }
    }
}

参数说明:

  • --host / --port:隧道本地映射地址与端口
  • --username:目标网关 SSH 登录账号 root
  • --privateKey:本地 ed25519 私钥绝对路径,免密认证
  • --pre-connect:启动 MCP 前预先建立 SSH 连接

命令行一键添加 SSH MCP 服务

json 复制代码
claude mcp add-json ssh-mcp-server '{"command":"npx","args":["-y","@fangjunjie/ssh-mcp-server","--host","127.0.0.1","--port","10400","--username","root","--privateKey","/home/lbt/.ssh/id_ed25519","--pre-connect"]}'

安装 Playwright MCP(浏览器自动化)

perl 复制代码
claude mcp add playwright -- npx @playwright/mcp@latest --headless --no-sandbox
  • --headless:无头模式运行浏览器,无 GUI 窗口
  • --no-sandbox:关闭沙箱,容器 / 服务器环境必备参数

由于pc 和网关没有路由,需要使用playwright的时候,需要在PC电脑上安装nginx代理 ,nginx.conf代码块

ini 复制代码
	server {
		listen 19090;
		server_name localhost;

		# 现代 Nginx 核心对策:防止 Nginx 自动补全为 80 端口
		absolute_redirect off;

		location / {
			proxy_pass http://192.168.0.8/;

			# 只要这一行,自动搞定 99% 的重定向端口丢失问题
			proxy_redirect default;

			# 用 $http_host 动态获取客户端的"域名+19090端口",优雅且不会写死
			proxy_set_header Host $http_host;
			
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			
			proxy_cookie_path / "/; SameSite=Lax";
		}
	}

mcp安装验证

复制代码
claude mcp list

测试验证(实际场景用到)

Playwright截图步骤(用于web 错误排查)

自然语言提问:

打开http://172.16.13.31:19090/auth/输入admin/admin ,点击登录 ,然后 Edge2Cloud → E2C Modbus → Terminal,点击 Setting 后截图

执行结果如下:

  1. 打开 http://172.16.13.31:19090/auth/,用 admin/admin 登录成功
  2. 依次点进 Edge2Cloud → E2C Modbus → Terminal 标签页
  3. 点击 Setting 区块标题将其收起
  4. 全页截图已保存:e2c-modbus-terminal-setting-collapsed.png

ssh-mcp-server 这个主要是操作网关上的任意文件,譬如查看读写,内容比较简单忽略

运维与排错指南

MCP 服务管理常用命令

csharp 复制代码
# 查看已添加MCP服务列表
claude mcp list

# 重启SSH MCP服务
claude mcp restart ssh-mcp-server

# 删除异常MCP服务
claude mcp remove ssh-mcp-server
相关推荐
乘风gg3 小时前
AI GenUI 真正落地时,前端到底要做什么?
前端·ai编程·cursor
武子康1 天前
调查研究-190 Continue.dev 被 Cursor 收购:AI 编程工具正从“插件竞争“迈入“平台整合“阶段
人工智能·ai编程·cursor
浩风祭月2 天前
Cursor + Claude Code实战:从需求分析到测试提交的完整流程
ai编程·claude·cursor
nuIl3 天前
实现一个 Coding Agent(7):Skills
前端·agent·cursor
nuIl3 天前
实现一个 Coding Agent(8):会话持久化与多会话
前端·agent·cursor
王小二AI7 天前
baoyu-skills 实战:22 个 AI 技能,从采集到发布一句话搞定
ai编程·cursor
乘风gg7 天前
手把手带你实践历时一年总结的 AI Code Review 最佳工作流!
前端·ai编程·cursor
忧云10 天前
2026年最新 Cursor 国内使用 DeepSeek API等各模型使用完整教程
ai编程·策略模式·cursor·byok·cursor使用国内大模型
nuIl11 天前
实现一个 Coding Agent(6):并行工具调用
前端·ai编程·cursor