ngrok打通公网隧道完整详解(适配AMD云GPU+vLLM私有化DeepSeek场景)

注册 AMD AI 开发者计划,领取免费200卡时算力

http://marketing.csdn.net/questions/Q2604140858304426315?utm_source=zhangfeng1133

AMD Developer Cloud(AMD云GPU)完整指南:外网开放 + 文件上传下载

前置核心说明

  1. AMD云容器禁用账号密码登录,全程仅支持SSH密钥鉴权;
  2. JupyterLab、vLLM仅容器本地127.0.0.1监听,默认无公网访问权限,必须内网穿透(ngrok/cpolar);
  3. 分两大类需求:
    • ① 外网访问Web服务(Jupyter、vLLM 8000推理接口)
    • ② 本地Mac/电脑 ↔ 云端 上传/下载数据集、模型权重

一、外网开放Web服务(JupyterLab / vLLM)两种方案

方案1:cpolar(国内首选,低延迟、无强制人机验证)

1. 云端容器一键安装cpolar
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
sudo systemctl enable cpolar
sudo systemctl start cpolar
2. 绑定账号Token

浏览器打开容器内面板:http://127.0.0.1:9200,登录cpolar官网复制Authtoken填入绑定。

3. 穿透端口
# 暴露JupyterLab 8888端口,公网访问Jupyter传文件、写代码
cpolar http 8888
# 同时暴露vLLM推理接口8000端口,本地Mac远程调用大模型
cpolar http 8000

执行后输出公网HTTPS地址:https://xxx.cpolar.top

  • 免费版:域名24小时自动刷新;
  • 付费专业版:可固定二级域名,永久不变,适合长期跑模型。

方案2:ngrok(海外节点,适合海外设备访问)

就是你前文第七步完整流程,简要复述:

  1. 安装ngrok官方源
  2. 注册账号配置authtoken(必须,否则4018报错)
  3. 穿透端口
ngrok http 8000  # vLLM
ngrok http 8888  # Jupyter
两者对比(AMD云场景)
工具网络免费版限制API调用友好度
cpolar国内节点,延迟低域名24h刷新,带宽1Mbps无弹窗,程序可直接调用vLLM
ngrok海外节点,国内易超时重启隧道域名变更免费外网访问弹出人机验证,脚本调用易失败

二、文件上传下载4套方案(适配无密码SSH密钥环境)

方案1:JupyterLab网页传输(最简单,无需SSH/额外隧道)

操作步骤
  1. 用cpolar/ngrok打通8888端口,打开公网Jupyter地址;

  2. 左侧文件面板:

    • 上传:点顶部上传图标,单选/多选文件;
    • 下载:右键文件 → Download;
  3. 文件夹处理:
    Jupyter原生不支持直接上传文件夹,云端终端打包压缩:

    # 压缩文件夹
    tar -zcvf dataset.tar.gz ./my_dataset
    # 解压上传后的压缩包
    tar -zxvf dataset.tar.gz
    
适用场景:临时小文件、调试、不想配置SSH密钥

方案2:SFTP图形化拖拽(FileZilla,大模型/批量文件夹首选)

依赖AMD云自带SSH密钥登录,全程不用密码

  1. 获取容器SSH信息
    实例详情页 → Interactive Endpoints,复制:
  • SSH私钥Secret Key
  • 公网SSH地址、端口
  1. 本地Mac配置FileZilla
  • 协议:SFTP - SSH文件传输
  • 主机:AMD给出的SSH域名/IP
  • 端口:分配的SSH端口
  • 用户:默认root
  • 登录类型:密钥文件,导入平台下载的私钥,密码框留空
  1. 直接左右面板拖拽文件夹,支持几十GB模型断点续传

方案3:命令行SCP/Rsync(Mac终端无软件,自动化同步)

1)本地上传文件/文件夹到云端
# 单文件
scp -P SSH端口 /本地文件路径 root@AMD_SSH地址:/workspace/models
# 文件夹(加-r)
scp -P SSH端口 -r /本地数据集 root@AMD_SSH地址:/workspace/dataset
2)云端下载大模型到本地(推荐rsync,断点续传)
rsync -avz --progress --partial -e "ssh -p SSH端口" root@AMD_SSH地址:/workspace/deepseek-r1-14b ./本地保存目录

方案4:简易HTTP静态文件服务(一键公网批量下载模型)

不想进Jupyter、SFTP,直接对外开放模型目录下载

  1. 进入模型目录,启动静态文件服务
cd /workspace/models
python -m http.server 8001
  1. 新开cpolar/ngrok隧道暴露8001
cpolar http 8001
  1. 本地浏览器打开公网地址,一键下载全部权重文件

三、SFTP vs Jupyter网页 怎么选?

传输方式优势短板适合场景
Jupyter网页零配置、复用现有HTTP隧道、不用密钥不支持文件夹直传、大文件慢临时调试、小文件、多人浏览器操作
SFTP FileZilla拖拽文件夹、断点续传、大模型高速传输需要配置SSH密钥4GB+模型权重、数据集批量同步

四、高频避坑(AMD云专属)

  1. 无法用密码SFTP登录
    AMD容器强制SSH密钥鉴权,任何密码输入都会拒绝,FileZilla必须选择「密钥登录」;
  2. ngrok免费版每次重启隧道URL变更
    每次重启ngrok http 8000后,本地vLLM客户端API地址要同步修改;
  3. cpolar免费带宽1Mbps,大模型上传卡顿
    批量几十GB权重建议升级专业版3Mbps带宽,或本地先压缩tar.gz再上传;
  4. Jupyter网页超时断开
    大文件上传时不要关闭浏览器页面,超时重新上传即可;
  5. 容器闲置自动销毁
    不用时导出模型文件,实例销毁后所有数据清空。

五、最简工作流(跑vLLM远程调用场景)

  1. AMD云启动vLLM服务,监听8000;
  2. 云端安装cpolar,打通8000(推理)+8888(Jupyter传文件);
  3. 本地Mac浏览器打开cpolar Jupyter地址,上传数据集;
  4. 本地Mac用curl/AI客户端调用cpolar 8000公网地址的vLLM接口;
  5. 训练完成后FileZilla SFTP批量下载模型权重到本地。

AMD云GPU 各类上传下载方案速度实测全对比

分四大类:cpolar穿透、ngrok穿透、Jupyter网页、AMD原生直连SFTP,结合你跑vLLM/大模型权重场景讲清楚速度上限、优缺点、适合多大文件。

一、cpolar(国内穿透,你日常Mac远程首选)

1. 免费版(1Mbps总带宽,上行+下行共享)

  • 理论峰值:125 KB/s,实测稳定 80~110 KB/s
  • 1GB文件:约20分钟;10GB模型权重:3小时+
  • 限制:每月1GB流量上限、24小时随机域名、单隧道限速,晚高峰会跌到30~50KB/s
  • 适用:几十MB小数据集、单文件调试、偶尔下载推理结果

2. 付费基础版(2Mbps)

  • 实测稳定 200~240 KB/s,10GB ≈1.5小时

3. 专业版(3~10Mbps)

  • 3Mbps ≈350KB/s,10Mbps ≈1.1MB/s
  • 无流量限制、固定域名,适合长期频繁传几十GB模型

速度短板

  1. HTTP隧道(Jupyter网页、静态文件服务)有HTTPS加密开销,比同带宽TCP(SFTP)慢10%~20%
  2. 免费版共享节点,多人同时使用会严重降速

二、ngrok(海外穿透,国内访问极不推荐传大文件)

  1. 带宽无官方硬限速,但跨境国际出口瓶颈严重
  2. 国内Mac实测:20~100KB/s波动极大,高峰期甚至10KB/s以内、频繁断连
  3. 额外问题:
    • 免费外网访问弹出人机验证,浏览器下载会中断
    • TCP隧道每次重启端口随机,SFTP传文件极折腾
  4. 适用场景:仅临时调试vLLM API,绝不适合上传/下载模型权重

三、JupyterLab网页上传下载(复用8888 HTTP隧道)

速度完全依附当前cpolar/ngrok带宽,额外多一层浏览器文件分片开销:

  • cpolar免费版:70~95KB/s,比纯TCP-SFTP慢15%左右
  • 致命短板:
    1. 不支持文件夹直传,必须先云端打包tar.gz
    2. 大文件(>2GB)浏览器容易超时断开,无断点续传
  • 适合:<500MB小文件、csv、代码、推理输出图片

四、AMD云原生直连SFTP(最快、优先大模型传输)

不用任何穿透工具,直接使用AMD云实例自带SSH公网地址,本地Mac密钥免密SFTP/SCP/Rsync:

速度表现

  1. 国内家庭千兆宽带:3~8 MB/s,是cpolar免费版的30~80倍
  2. 企业专线可冲到10~15MB/s
  3. 40GB大模型:千兆网40分钟~2小时完成,支持rsync断点续传

优势

  • 无第三方带宽限速、无流量限制、无域名过期问题
  • FileZilla图形拖拽、支持多文件并发、断点续传

局限

需要AMD实例开放交互式SSH端点,每次新建实例要重新配置本地密钥

五种传输方案速度总表(直观对比)

传输方式实测稳定速度40GB模型耗时断点续传适合场景
AMD原生SFTP直连3~8 MB/s40min~2h✅ rsync支持大模型权重、批量数据集(首选)
cpolar专业版10Mbps TCP-SFTP~1.1 MB/s10h✅长期远程无固定公网、国内稳定访问
cpolar免费版TCP-SFTP80~110 KB/s10h+❌临时小文件应急
cpolar免费版Jupyter网页70~95 KB/s12h+❌代码、小csv、图片
ngrok国内穿透(任意隧道)20~100 KB/s波动极易中断失败❌仅调试API,不适合传文件

关键提速实操建议(针对AMD云GPU传模型)

1. 4GB以上大文件:优先原生SFTP,放弃穿透工具

本地Mac用rsync,支持断点续传,断网后不用重新从头传:

rsync -avz --progress --partial -e "ssh -p AMD_SSH端口" root@AMD地址:/workspace/models ./本地文件夹

2. 只能用cpolar穿透的场景(无原生SSH权限)

  • 传文件一律用 cpolar tcp 22 开SFTP隧道,不要用Jupyter网页,速度快15%
  • 传输前云端打包压缩:tar -zcvf model.tar.gz 模型文件夹,压缩后体积减半,传输时间直接减半

3. 避坑点

  1. cpolar免费版每月仅1GB流量,频繁传模型会直接限速429报错;
  2. ngrok跨境链路不适合大文件,几十GB权重大概率中途断开;
  3. Jupyter网页单文件建议控制在2GB以内,超大文件必崩;
  4. SFTP加密有10%~20%性能损耗,纯内网直连时速度最优。

场景选型总结

  1. 频繁上传/下载DeepSeek 14B/几十GB权重:AMD原生SFTP直连(速度碾压所有穿透工具)
  2. 家里Mac随时远程调用vLLM,偶尔传小文件:cpolar免费版HTTP Jupyter网页
  3. 长期稳定远程、无原生SSH权限:cpolar专业版TCP 22 SFTP隧道
  4. 海外设备调用API、完全不建议传文件:ngrok仅做接口调试,不用来传输数据

一、为什么本部署流程必须用ngrok

AMD云GPU实例属于云端私有隔离网络,vLLM推理服务仅绑定localhost:8000,外网、本地Mac/Windows电脑无法直接访问容器内API。
ngrok是加密内网穿透隧道工具,无需公网IP、不用配置防火墙/安全组,一键把容器内8000端口暴露为公网HTTPS地址,本地AI客户端(Cherry Studio/OpenCode)可远程调用私有化大模型,所有对话数据只在AMD云GPU内流转,不会上传第三方AI服务商。

ngrok核心工作原理

  1. 云容器内安装ngrok客户端,主动向外与ngrok全球云服务器建立持久TLS加密双向隧道(出站连接,规避容器防火墙拦截);
  2. ngrok云端分配专属临时HTTPS域名 https://xxxx.ngrok-free.app;
  3. 本地电脑发起API请求 → ngrok云端 → 加密隧道转发至AMD云容器localhost:8000(vLLM服务);
  4. 模型推理结果沿原加密隧道原路返回本地,全程HTTPS加密传输。
    简单比喻:AMD云GPU是封闭小黑屋,ngrok相当于在公网搭建一条加密专用通道,外部设备才能进入屋内调用模型。

二、分步完整拆解操作流程

步骤1:Debian容器安装ngrok(AMD云环境专用脚本)

curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
  | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
  && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
  | sudo tee /etc/apt/sources.list.d/ngrok.list \
  && sudo apt update \
  && sudo apt install ngrok
  1. 操作逻辑:导入ngrok官方GPG密钥→添加官方apt软件源→更新软件列表→安装客户端;
  2. 常见提示说明:安装时弹出compute-artifactory.amd.com源解析失败警告,是AMD容器内部私有源失效,不影响ngrok安装,直接忽略。

步骤2:注册账号并获取Authtoken(强制必填,2023年底后新规则)

  1. 注册地址:https://dashboard.ngrok.com/signup
    支持GitHub/Google/邮箱注册,必须完成邮箱验证,否则token失效;
  2. 密钥获取页:https://dashboard.ngrok.com/get-started/your-authtoken
  3. Authtoken作用:ngrok身份凭证,用来绑定隧道会话,无token直接启动隧道会抛出ERR_NGROK_4018报错。

步骤3:容器内配置身份令牌

ngrok config add-authtoken 你的复制token字符串

命令会自动写入~/.ngrok2/ngrok.yml配置文件,持久生效,重启终端无需重复配置。

步骤4:启动隧道,暴露vLLM 8000端口

ngrok http 8000
启动成功输出示例
Session Status    online
Forwarding        https://xxxx.ngrok-free.app -> http://localhost:8000
  • https://xxxx.ngrok-free.app:公网访问根地址,后续客户端配置核心参数;
  • 后台同步开启本地调试面板:http://127.0.0.1:4040,可查看所有API请求日志、调试报错。

步骤5:本地电脑验证公网连通性(Mac/Windows终端通用)

curl https://xxxx.ngrok-free.app/v1/models \
  -H "Authorization: Bearer no-key"
验证成功标准

返回标准JSON,data[0].id字段值为deepseek-r1-14b,代表公网隧道正常转发请求到vLLM推理服务。

vLLM本地服务不校验API密钥,请求头随便填写非空字符串(示例no-key)即可。

三、高频报错与避坑指南

1. ERR_NGROK_4018 认证失败

  • 原因:ngrok新版强制账号+token认证,未执行add-authtoken直接启动隧道;
  • 解决:完成账号注册、邮箱验证,复制token执行配置命令后重启隧道。

2. 免费版域名每次重启随机变化

免费策略限制:每次关闭ngrok http 8000再重启,xxxx.ngrok-free.app子域名会变更;

  • 影响:Cherry Studio、OpenCode内配置的API Host地址失效,无法连接模型;
  • 解决方案:每次重启隧道后,同步修改本地客户端的公网URL配置。

3. 免费版硬性资源限制(AMD云部署需注意)

  1. 同一账号仅支持1个同时在线隧道,无法同时穿透多个端口;
  2. 月度流量、HTTP请求数有上限(每月20000次请求、1GB出站流量),大模型高频对话容易超限断连;
  3. 隧道会话存在超时机制,长时间闲置会自动断开,需要重新启动;
  4. 不支持自定义固定域名,商用长期部署建议付费版。

4. 本地curl返回连接拒绝/超时

排查顺序:

  1. 确认AMD云Terminal中vLLM服务正常运行(INFO: Application startup complete);
  2. 确认ngrok会话状态为online,无断开重连提示;
  3. 核对URL无拼写错误,区分ngrok-free.app,不要多打/少字符;
  4. 检查AMD云实例未被关闭,实例销毁后GPU与隧道全部失效。

四、适配DeepSeek-vLLM私有化场景的使用价值

  1. 数据隐私闭环:模型、算力全部在AMD云GPU,用户提示词、代码、文档仅在容器内流转,不用上传第三方AI平台;
  2. 跨设备远程访问:办公室、家里Mac/Windows均可随时连接私有14B大模型;
  3. 标准OpenAI兼容API:ngrok转发后地址完全兼容Cherry Studio、OpenCode、Python OpenAI SDK等主流客户端;
  4. 零网络改造:不用申请公网IP、不用修改云服务器安全组,一条命令完成端口公网暴露。

五、补充:ngrok与本流程上下游联动关系

整体链路:
本地电脑(Cherry/OpenCode)→ ngrok公网HTTPS域名 → ngrok加密隧道 → AMD云容器ngrok客户端 → localhost:8000(vLLM推理服务)→ DeepSeek-R1-14B模型

  1. 上游:vLLM启动必须监听8000端口,隧道端口参数要和服务端口严格对应;
  2. 下游:客户端配置时,API Host填写https://xxxx.ngrok-free.app,API路径拼接/v1(OpenAI协议标准);
  3. 收尾提醒:不用GPU时,务必删除AMD云实例,否则持续消耗200小时免费算力额度,ngrok隧道也会同步失效。

六、替代方案对比(长期使用建议)

  1. ngrok免费版:适合短期测试、学习部署,零成本,但域名变动、流量有限;
  2. ngrok付费版:固定域名、不限流量,适合个人长期私有模型使用;
  3. FRP(内网穿透):自建服务器做中转,无流量限制,但需要自备公网服务器,部署复杂度更高;
  4. cpolar:国内替代穿透工具,国内网络稳定性优于ngrok国际节点。

一、内网穿透通用应用场景(适配 ngrok / cpolar,包含你文中 vLLM 远程调用场景)

1. AI 大模型远程调用(你原文核心场景)

本地/云端GPU容器部署 vLLM、Ollama、Dify、DeepSeek、Llama 推理服务,仅内网可访问:

  • 办公室Mac、笔记本、手机随时随地调用私有大模型API;
  • 异地团队协作调试本地微调模型、RAG知识库;
  • 不用购买公网IP、不用修改云服务器安全组,一行命令生成公网HTTPS地址;
  • 完全隔离模型权重、业务数据,不用上传第三方AI平台,数据隐私可控。

2. 开发调试 Web / 接口 / Webhook(程序员高频)

  1. 公众号、小程序、企业微信、钉钉开发:本地接口接收平台消息回调,不用反复部署测试环境;
  2. 支付、OAuth、第三方登录回调调试(支付宝/微信支付、Stripe);
  3. GitHub/Gitee Webhook、自动化CI测试本地接收推送事件;
  4. 移动端App、小程序联调本地后端接口,手机直接访问本地服务。

3. 临时项目公网演示

  • 未上线的网站、后台管理系统、可视化大屏,发给客户/领导远程预览;
  • 前端Vue/React本地热更新,外网实时查看修改效果,省去打包部署流程。

4. 远程内网设备管理(TCP隧道)

  • SSH远程连接云端Linux、家里树莓派、NAS;
  • 远程桌面(Windows 3389、Mac VNC)在外控制内网电脑;
  • 穿透数据库端口(MySQL/PostgreSQL),临时远程连接本地数据库调试;
  • 智能家居、监控摄像头、工业设备外网远程管理。

5. 个人/家庭私有服务外网访问

  • 家庭NAS网盘、影音库、私人博客、本地文件管理器公网访问;
  • 本地搭建私人ChatGPT、知识库、文档服务,出门随时使用。

6. 远程办公、企业内网系统访问

  • 出差远程访问公司CRM、ERP、财务系统、内部OA;
  • 分支机构无需搭建复杂VPN,轻量化临时内网穿透。

7. 本地服务对外提供临时API

测试第三方系统对接自有接口、临时开放接口给合作方,用完直接关闭隧道,安全性高。

二、cpolar 完整介绍(国内 ngrok 平替)

1. 基本定义

cpolar(极点云)是国产商用内网穿透工具,原理和 ngrok 完全一致:客户端建立加密长连接到国内中继服务器,把内网端口映射为公网HTTPS/TCP地址,无需公网IP、无需路由器端口映射,专门适配国内网络环境。

2. 核心工作流程

  1. 云服务器/本地电脑安装 cpolar 客户端;
  2. 执行 cpolar http 8000(对应vLLM端口)建立隧道;
  3. 客户端主动连接国内云中继节点,生成公网地址 https://xxx.cpolar.top;
  4. 外网请求经由国内服务器加密转发至本地8000端口vLLM服务;
  5. 自带本地调试面板 127.0.0.1:4040,查看所有API请求日志。

3. 核心功能

基础能力

  • 同时支持 HTTP/HTTPS / TCP 隧道,覆盖Web、数据库、SSH、远程桌面;
  • 自动签发HTTPS证书,所有公网地址默认加密;
  • 全平台兼容:Windows、macOS、Linux、ARM树莓派、Docker容器;
  • 图形化中文Web管理面板 + 命令行双操作模式,新手友好;
  • 分国内专属节点,国内访问延迟远低于ngrok海外节点。

进阶付费功能

  • 保留固定二级子域名(免费版24小时随机变更,每次重启地址变);
  • 自定义域名绑定、泛域名支持;
  • 固定TCP端口、多并发隧道、更高带宽;
  • IP白名单访问控制,限制仅指定设备调用你的vLLM服务;
  • 多进程同时在线、流量统计、长期保活隧道。

4. 套餐资费(2026)

版本价格核心限制
免费版永久免费1Mbps带宽、域名24小时刷新、1进程、4隧道
基础版99元/年2Mbps、保留3个子域名、8隧道
专业版149元/年3Mbps、自定义域名、固定TCP端口
商业版204元/年IP白名单、泛域名、多进程、企业支持

5. 和 ngrok 关键对比(针对vLLM远程调用场景)

cpolar 优势

  1. 国内网络稳定:服务器在国内,Mac本地访问云端vLLM无海外延迟、丢包,不用翻墙;
  2. 中文控制台、中文文档,报错提示易懂;
  3. 免费版访问无强制人机验证页面(ngrok免费版外网打开会弹出确认页,影响API程序调用);
  4. 国内支付、售后客服响应快;
  5. 云服务器、国内GPU云环境兼容性更好。

cpolar 短板

  1. 免费二级域名每24小时自动更换,每次远程调用vLLM都要更新客户端URL(付费版可锁定固定域名);
  2. 免费带宽仅1Mbps,大模型长对话、批量推理会有速度瓶颈;
  3. 海外访问速度弱于ngrok全球节点。

ngrok 优势

  1. 免费域名重启会话才变更,24小时内不变;
  2. 全球多节点,海外设备访问流畅;
  3. 生态完善,AI网关、OAuth鉴权、流量策略等企业功能更强。

ngrok 短板

  1. 海外服务器,国内访问延迟高、偶发超时,调用vLLM容易卡顿;
  2. 免费版公网访问强制弹窗,程序自动化调用会失败;
  3. 付费套餐美元计价,成本更高;
  4. 国内网络环境偶发连接失败。

6. cpolar 快速部署示例(替换原文ngrok打通vLLM)

1)Linux云服务器安装

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
sudo systemctl enable cpolar
sudo systemctl start cpolar

2)网页后台注册账号、获取Authtoken

后台地址:http://127.0.0.1:9200,绑定账号token

3)穿透vLLM 8000端口

cpolar http 8000

输出公网地址 https://xxx.cpolar.top,本地Mac curl测试:

curl https://xxx.cpolar.top/v1/models -H "Authorization: Bearer no-key"

7. 适用人群选择建议

  1. 纯国内使用、本地Mac远程连国内AMD/阿里云GPU跑vLLM → 优先 cpolar,延迟低、无弹窗;
  2. 有海外设备需要调用模型、短期临时测试 → ngrok;
  3. 长期稳定私有大模型服务 → cpolar专业版(固定域名+更高带宽);
  4. 仅临时调试Webhook、短期演示 → 两者免费版均可。

三、补充避坑(cpolar专属)

  1. 免费域名24小时自动重置:每天需要更新本地AI客户端的API地址,长期使用建议升级专业版保留域名;
  2. 免费1Mbps带宽限制:批量推理、长文本对话会速度慢,大模型场景建议付费升级带宽;
  3. 云服务器防火墙放行9200(cpolar管理面板)、8000(vLLM)端口,否则隧道无法正常转发。

一、结论:ngrok / cpolar 不只能做HTTP,完全支持FTP上传下载

两者都分两种隧道类型:

  1. http 隧道:只给网页、API、vLLM这类Web服务用;
  2. tcp 隧道:底层裸端口转发,支持FTP、SSH、数据库、远程桌面等所有TCP协议,FTP上传下载必须用TCP隧道。

关键难点:FTP是双通道协议(坑最多)

FTP分两条独立TCP链路:

  1. 控制通道(21端口):登录、列目录、发指令;
  2. 数据通道(随机高端口):真正上传/下载文件;
    被动模式(现在通用)会随机开一段端口传输数据,只用一条21端口隧道会出现能登录、看不到文件、传文件报错。

二、cpolar 穿透FTP两种方案(国内优先推荐)

方案1:官方专用FTP隧道(付费专业版/商业版,最简单)

cpolar后台支持预留专用FTP地址,自动配套一组固定数据端口段,不用手动开多条TCP隧道:

  1. 登录cpolar后台 → 【预留】→ 拉到最底部【保留FTP地址】
  2. 选择国内节点,生成一组地址:1.tcp.cpolar.top:xxxx + 配套数据端口段(如25125-25127)
  3. 服务器FTP软件(vsftpd/FileZilla)修改被动端口范围,和后台给的数据端口段完全一致
  4. 本地cpolar创建隧道,隧道类型选FTP,绑定本地21端口
  5. 外网FileZilla连接:主机=1.tcp.cpolar.top,端口=xxxx,传输模式勾选被动

优点:一条隧道搞定,端口永久固定,国内延迟低,适合长期传大文件。

方案2:手动多条TCP隧道(免费版可用,麻烦)

免费版没有专用FTP隧道,需要同时创建两类TCP隧道:

  1. 隧道1:TCP,本地21端口(控制端口)
cpolar tcp 21

输出公网地址:2.tcp.cpolar.top:51234
2. 服务器FTP配置固定被动端口范围,例如pasv_min_port=40000 pasv_max_port=40010
3. 对4000040010每个端口单独开TCP隧道(最少35个够用)

cpolar tcp 40000
cpolar tcp 40001
cpolar tcp 40002
  1. FileZilla连接时填写被动模式,端口范围匹配cpolar分配的公网端口

vsftpd 服务器配置示例(Linux云服务器)

# /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
# 固定被动端口区间
pasv_min_port=40000
pasv_max_port=40010
# 填写cpolar分配的公网域名
pasv_address=2.tcp.cpolar.top

改完重启服务:sudo systemctl restart vsftpd

三、ngrok 穿透FTP方式(海外节点,国内不稳定)

ngrok同样靠tcp隧道实现FTP,逻辑和cpolar手动多隧道一致:

  1. 开启控制端口隧道
ngrok tcp 21

得到地址 0.tcp.ngrok.io:15230
2. FTP服务锁定被动端口段,批量启动对应端口tcp隧道

ngrok tcp 40000 &
ngrok tcp 40001 &
ngrok tcp 40002 &

ngrok FTP短板

  1. 免费版TCP端口每次重启随机变,每次传文件要改FileZilla端口;
  2. 国内访问海外TCP隧道延迟高、大文件上传容易中断;
  3. 免费版单账号仅1条在线隧道,同时开多条FTP隧道会超限。

四、FTP穿透替代方案(更简单,避双通道麻烦)

SFTP(强烈推荐,替代传统FTP)

SFTP基于SSH 22端口,单端口完成登录+文件传输,没有被动端口一堆坑:

  1. 只需要一条TCP隧道穿透22端口即可上传下载;
  2. 传输全程加密,明文FTP有泄露账号、文件风险;
  3. cpolar/ngrok一条命令搞定:
# cpolar
cpolar tcp 22
# ngrok
ngrok tcp 22

FileZilla直接选「SFTP-SSH文件传输协议」,填TCP公网地址+端口,不用配置被动模式。

五、cpolar vs ngrok 做FTP对比

维度cpolarngrok
网络节点国内节点,上传下载稳定低延迟海外节点,国内大文件易超时
FTP专用隧道付费版支持一键FTP,自动配套数据端口无专用FTP隧道,需手动多TCP
TCP端口稳定性付费版可固定TCP端口免费版端口每次重启全部变化
免费限制多TCP隧道可同时在线,带宽1Mbps仅1条隧道同时在线
加密FTP/FTPS/SFTP全支持仅底层TCP转发,无内置FTP加密

六、实操避坑总结

  1. 只用http隧道绝对无法实现FTP文件上传下载,必须用TCP隧道;
  2. 传统FTP必须配置被动模式+固定端口段,否则只能登录不能传文件;
  3. 长期稳定传文件优先cpolar专业版FTP隧道,临时测试用SFTP;
  4. 明文FTP不安全,生产环境建议FTPS或SFTP;
  5. 免费工具FTP多隧道繁琐,频繁传文件建议升级付费固定端口套餐。

AMD云GPU(JupyterLab无密码环境)文件传输完整方案

先理清核心矛盾:
AMD Developer Cloud 实例默认只用SSH密钥鉴权,没有登录密码,传统SFTP/FileZilla填密码的方式走不通;但分两类方案,优先不用SSH、直接复用你已经搭好的ngrok/cpolar Jupyter隧道,其次是SSH密钥免密SFTP。

方案一:完全不用SFTP,直接用JupyterLab公网网页传文件(最简单,适配你现有ngrok 8000/8888隧道)

你现在已经用 ngrok/cpolar 打通了JupyterLab公网HTTPS地址,网页自带上传/下载功能,不需要SSH、不需要账号密码,完美匹配无密码环境。

操作方式

  1. 打开公网地址 https://xxx.ngrok-free.app 进入JupyterLab;
  2. 左侧文件浏览器:
    • 上传文件:点顶部「上传图标」,本地单选/多选文件;
    • 下载文件:右键文件 → Download;
  3. 限制:原生界面不支持直接上传整个文件夹,解决办法:
    • 云端打包压缩:tar -zcvf data.tar.gz 文件夹名,下载压缩包;
    • 本地打包zip/tar,上传压缩包后在Jupyter终端解压。

优势(适配你的vLLM场景)

  1. 复用已有的HTTP隧道,不用额外开TCP隧道、不用配置SSH密钥;
  2. 零额外配置,本地Mac浏览器直接操作,不需要FileZilla、WinSCP;
  3. 鉴权复用Jupyter本身的token,不用新增一套账号密码;
  4. 小文件、模型权重单包传输完全够用。

短板

批量几十GB多文件频繁同步效率偏低,适合临时取模型输出、上传数据集。

方案二:SSH密钥免密SFTP(适合大文件、批量文件夹拖拉拽)

AMD云实例创建时强制绑定SSH公钥,本地持有私钥即可免密SFTP,全程不需要密码,搭配cpolar/ngrok TCP隧道穿透22端口使用。

完整流程

1. 本地Mac生成SSH密钥(一次生成永久使用)
ssh-keygen -t ed25519

一路回车,不要设置密钥密码,生成免密私钥文件 ~/.ssh/id_ed25519。

2. AMD云控制台添加公钥

复制 ~/.ssh/id_ed25519.pub 全部内容,在创建GPU实例页面粘贴到SSH Key框,创建实例时绑定密钥对。
实例创建完成后,本地可直接 ssh root@实例公网IP 免密登录。

3. 用cpolar/ngrok打通22端口TCP隧道(云端执行)
# cpolar
cpolar tcp 22
# ngrok
ngrok tcp 22

输出类似 2.tcp.cpolar.top:56789,这是公网SFTP连接地址。

4. FileZilla免密SFTP连接(Mac/Windows通用)
  1. 协议:SFTP - SSH File Transfer Protocol
  2. 主机:cpolar/ngrok给出的TCP域名
  3. 端口:隧道分配的端口号
  4. 用户:root(AMD云默认用户名)
  5. 登录类型:密钥文件,选择本地私钥 id_ed25519,密码框留空
  6. 连接成功后可直接拖拉文件夹,支持断点续传大模型权重。

关键说明

这里完全不需要服务器密码,身份靠本地私钥加密校验,完美适配AMD无密码实例;免费ngrok TCP端口每次重启会变,长期使用建议cpolar付费版固定TCP端口。

方案三:命令行免密SCP/Rsync(Mac终端直传,无图形软件)

不用FileZilla,本地终端直接上传/下载,依赖SSH密钥免密,搭配TCP隧道地址:

上传本地文件夹到云端

# cpolar示例地址 2.tcp.cpolar.top:56789
scp -r -P 56789 /本地数据集路径 root@2.tcp.cpolar.top:/workspace/models

云端大文件夹下载到本地(推荐rsync,支持断点续传,适合几十GB模型)

rsync -avz --progress --partial -e "ssh -p 56789" root@2.tcp.cpolar.top:/workspace/output ./本地保存目录

方案四:进阶:HTTP文件服务隧道(兼顾vLLM 8000端口+文件下载,不用Jupyter界面)

如果不想打开Jupyter,只想公网直接拉取模型文件,在云端起简易HTTP文件服务,复用现有ngrok 8000隧道或新开端口:

# 在模型目录启动静态文件服务,端口8001
cd /workspace/models
python -m http.server 8001
# 新开隧道暴露8001
ngrok http 8001

本地浏览器打开公网地址,直接下载全部文件,同样无密码,仅HTTP访问。

四种方案对比(针对AMD Jupyter无密码场景)

方案是否需要SSH/密钥是否额外隧道适合场景
Jupyter网页上传下载不需要复用现有8888/8000 HTTP隧道临时小文件、日常调试、不想配置密钥
密钥SFTP+FileZilla需要SSH密钥新增TCP 22隧道批量文件夹、几十GB大模型、频繁同步
SCP/Rsync命令行需要SSH密钥新增TCP 22隧道Mac习惯终端操作、脚本自动同步
Python静态HTTP服务不需要新开一条HTTP隧道批量下载模型权重、对外临时分发文件

避坑重点(AMD云专属)

  1. 不要尝试填服务器密码:实例禁用密码登录,仅SSH密钥鉴权,SFTP必须切换「密钥登录」;
  2. ngrok免费版TCP隧道端口随机,每次重启隧道后FileZilla连接端口要同步修改;
  3. 免费cpolar HTTP域名24小时刷新,Jupyter网页上传每天要更新地址;
  4. 大模型文件优先压缩tar.gz再传输,大幅减少上传耗时;
  5. 如果你只做vLLM推理、偶尔传文件,首选方案一Jupyter网页,不用折腾SSH和TCP隧道。
Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐