SSH 隧道配置指南
概述
由于安全考虑,平台不开放公网直接访问容器内的服务端口。若需从本地电脑访问容器内运行的 API 服务(如 vLLM、FastAPI 等),需通过 SSH 隧道进行本地代理映射。
本指南适用于所有需要本地访问容器服务的场景,包括但不限于:
- 文本生成 API
- 图像生成 API
- 语音识别 API
- 语音合成 API
- OCR 识别 API
步骤一:设置实例密码
- 进入工作台,找到对应的实例卡片
- 点击"设置密码"按钮
- 输入并确认密码,牢记该密码(后续 SSH 连接需要)

步骤二:获取连接信息
- 在工作台找到对应实例
- 点击实例卡片上的"SSH 连接"或"连接信息"按钮
- 复制完整的登录指令,格式通常为:
ssh root+vm-xxxxx@xxx.xx.xxx.xxx -p xxxxx - 记下以下信息:
- 用户名:
root+vm-xxxxx - 主机地址:
xxx.xx.xxx.xxx - SSH 端口:
xxxxx
- 用户名:

步骤三:打开本地终端
Windows 用户
- 打开"我的电脑"或"此电脑"
- 在地址栏输入
cmd或powershell并按回车 - 终端窗口会弹出

macOS / Linux 用户
打开系统自带的"终端"应用即可
步骤四:执行 SSH 映射指令
在本地终端中执行以下命令(注意替换为您实例的实际信息):
# 格式:ssh -CNg -L 本地端口:127.0.0.1:容器端口 用户名@主机地址 -p SSH端口
ssh -CNg -L 8188:127.0.0.1:8188 root+vm-xxxxx@xxx.xx.xxx.xxx -p xxxxx
参数说明:
-CNg:组合选项-C:启用压缩-N:不执行远程命令(仅转发)-g:允许远程主机连接到本地转发端口
-L 8188:127.0.0.1:8188:端口转发映射- 第一个
8188:本地访问端口(可自定义) 127.0.0.1:8188:容器内的服务地址和端口(与容器内服务保持一致)
- 第一个
用户名@主机地址 -p SSH端口:远程主机连接信息
示例:
# 将容器内 8188 端口映射到本地 8188
ssh -CNg -L 8188:127.0.0.1:8188 root+vm-k9hCcD0ufznGq16b@140.207.205.81 -p 50821
# 将容器内 8188 端口映射到本地 9000
ssh -CNg -L 9000:127.0.0.1:8188 root+vm-k9hCcD0ufznGq16b@140.207.205.81 -p 50821
步骤五:输入密码并保持连接
- 执行上 述命令后,终端会提示输入密码
- 输入您在步骤一中设置的密码
- 按回车确认
- 终端会进入静止状态,这是正常现象——表示 SSH 隧道已建立成功
- 保持该终端窗口始终打开,隧道才能持续有效

步骤六:在本地验证服务
隧道建立后,打开新的终端窗口(不要关闭步骤五的隧道终端),使用 curl 或其他工具验证 API 服务:
验证文本生成 API(vLLM)
curl http://localhost:8188/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/mnt/moark-models/Qwen3-8B",
"messages": [
{"role": "user", "content": "你好"}
],
"temperature": 0.7,
"max_tokens": 256
}'
验证图像生成 API(FastAPI)
curl http://localhost:8080/v1/images/generations \
-H "Content-Type: application/json" \
-d '{
"prompt": "一只猫",
"size": "1024x1024"
}'
验证语音识别 API(FastAPI)
curl http://localhost:8080/v1/audio/transcriptions \
-F "file=@test_audio.wav"
验证语音合成 API(FastAPI)
curl http://localhost:8080/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"input": "你好",
"voice": "default"
}'
验证 OCR API(FastAPI)
curl http://localhost:8080/v1/vision/ocr \
-F "file=@test_image.jpg"
预期结果:
- 如果返回 JSON 数据或数据流,说明隧道工作正常
- 如果收到连接拒绝错误,请检查:
- SSH 隧道终端是否仍然打开
- 本地端口号是否与映射配置一致
- 容器内服务是否已正确启动
常见问题
Q1:SSH 连接失败,提示"Permission denied"
A:密码输入错误或不存在。请重新检查在工作台中设置的密码。
Q2:隧道建立后,本地 curl 仍然连接拒绝
A:可能原因:
- 容器内的 API 服务未启动(需提前在 Notebook 或终端中启动)
- 容器内服务监听的端口与映射配置不一致
- SSH 隧道终端意外关闭
Q3:可以映射多个端口吗?
A:可以。新建多条 SSH 隧道或在一条隧道中指定多个 -L 参数:
ssh -CNg -L 8188:127.0.0.1:8188 -L 8080:127.0.0.1:8080 \
root+vm-xxxxx@xxx.xx.xxx.xxx -p xxxxx