- zvtd2026-08-0964675
【教程】CodeRed Cloud 免费套餐 SSH 登录方案:SFTP 上传 + Cloudflare Argo 隧道 + ttyd 网页终端
平台免费套餐禁用了 SSH shell,但可以曲线救国:SFTP 传代码 → 部署 Node.js 应用 → cloudflared Argo 出站隧道 + ttyd,把网页版终端挂到 Cloudflare 域名上,浏览器即开即用,全程不需要 root。
太长不看
SFTP 连接 :
code.codered.cloud:22,用户code,密码去 Dashboard 重置(临时密码)上传位置:
/www/,共 5 个文件(cr-run.sh/package.json/index.js/index.html/application.properties)平台不会自动
npm install:必须在cr-run.sh里显式写只有 3000 端口公网可达(Nginx 反代),其余端口被 Azure NSG 丢弃 → 用 cloudflared 出站隧道把 ttyd(
localhost:8001)暴露出去只有
/www和/log可写,$HOME(/home/code)不可写;文件系统是临时的,重新 Deploy 会重建环境0. 背景:为什么要这么折腾
CodeRed Cloud 是 Node.js / Django / WordPress 托管平台(轻量版 Heroku/Vercel),站点通过 SFTP 上传代码 + Dashboard 面板部署,支持 Node 22/24,预装 PM2。
免费套餐的硬限制:
限制 |
说明 |无 root/sudo |
装不了系统软件、改不了系统配置 |SSH 禁用 |
提示 “Upgrade your plan to enable SSH access”,只有 SFTP(端口 22,用户code) |仅暴露端口 3000 |
Nginx 只反代 3000,其他端口在 Azure NSG 层直接丢弃 |临时文件系统 |
每次 Deploy 重建环境,/www之外的修改不保留 |可写目录仅
/www和/log|$HOME(/home/code)不可写 |资源配额 |
RAM ~384 MiB,CPU ~512 MHz(可 burst 3.5 GHz),1 worker |思路很简单:SSH 被禁,那就自己造一个网页终端 —— Node 应用启动时下载
ttyd(Web Shell)和cloudflared(Argo 隧道)两个二进制,ttyd 监听本地端口,cloudflared 建立出站隧道把它挂到 CF 域名,浏览器访问即获得一个可用的服务器 shell。1. SFTP 登录
1.1 获取临时密码
1. 登录 CodeRed Dashboard:
https://code.codered.cloud2. 找到你的站点 → System Access (SFTP & SSH) 区块
3. 点 Reset System Password → 生成临时密码
^-^ 密码是临时的:每次 Deploy Production 重新部署后密码都会变,需要重新 Reset 一次。
1.2 连接参数
字段 |
值 |主机 |
code.codered.cloud|端口 |
22 |用户名 |
code|协议 |
SFTP(不是 SSH!) |密码 |
Dashboard → Reset System Password 生成的临时密码 |1.3 文件传输
传输工具和方式自行选择(FileZilla、WinSCP、命令行
sftp等均可),具体操作步骤可咨询 AI 助手或查阅所用工具的文档,这里不再展开。核心就两点:- 连接参数见上表:主机
code.codered.cloud、端口 22、用户code、临时密码- 所有文件都要传到
/www/目录下## 2. 上传什么:5 个文件,全部进
/www/文件 |
作用 |cr-run.sh|
平台入口脚本:npm install+exec node index.js(CodeRed 必需) |package.json|
依赖声明:仅express+axios|index.js|
主程序:Express 状态页 + 运行时下载并拉起 ttyd / cloudflared |index.html|
Vue3 状态页,展示 ttyd / 隧道 URL 等状态 |application.properties|
配置:功能开关、端口、登录凭证、隧道 token |cr-run.sh内容(关键):```#!/bin/sh
npm install --production --no-audit --no-fund 2>&1
exec node index.js
``> ^-^ **CodeRed 不会自动npm install** 平台只执行cr-run.sh,不装依赖。第一次部署报Cannot find module ‘express’` 就是漏了这一步。package.json:```{
"name": "codered-ttyd",
"version": "1.0.0",
"description": "CodeRed Cloud web terminal via ttyd + Cloudflare Argo",
"main": "index.js",
"scripts": { "start": "node index.js" },
"dependencies": {
"axios": "latest",
"express": "latest"
}
}
```application.properties关键配置项:```LITE_MODE=true
ENABLE_TTYD=true
ttyd 登录凭证,格式: 端口:用户名:密码
ttyd-credential=8001:用户名:密码
Argo 固定隧道凭证,注意http、端口8001
ttyd-argo-auth=
``> 代码文件必须传到/www/**根目录**,平台入口cr-run.sh` 在那里,放别处不生效。## 3. 部署:让代码跑起来
SFTP 传完文件后,去 Dashboard → Deployment 标签页:
操作 |
行为 |
适用场景 |Restart |
只重启 Node.js 运行时,不重装依赖 |
小改动,快 |Deploy Production |
重新构建 +npm install+ 重启(约 30s 停机) |
改依赖 / 首次部署 |^-^ CodeRed 不会自动重载代码,传完文件必须手动点 Deploy 或 Restart。
4. CF 转发 + ttyd:网页终端是怎么跑起来的
4.1 原理```
用户浏览器 ──HTTPS──► Cloudflare Edge ──Argo 出站隧道──► cloudflared(容器内) ──► ttyd(localhost:8001)
```为什么必须用 Argo 出站隧道:CodeRed 只有 3000 端口被 Nginx 反代到公网,其他端口在 Azure NSG 层直接丢弃 —— 入站连接根本进不来。而 cloudflared 建立的是出站 WebSocket 连接到 Cloudflare Edge,不碰 Azure 入站防火墙,所以完全不受限。4.2 ttyd:网页终端本体
ttyd 是个 Web Shell 程序,浏览器打开即是终端。本项目由
index.js在运行时从 GitHub Releases 下载二进制到/www/.npm/(随机文件名防特征检测),chmod 775后直接执行:```nohup /www/.npm/<随机名> -p 8001 -W -c '用户名:密码' bash >/www/.npm/<随机名>.log 2>&1 &
```关键参数:-
-p 8001:监听端口(与隧道 Ingress 目标一致)-
-W:必须加,否则终端只能看不能输入-
-c ‘user:pass’:登录认证4.3 访问
浏览器打开
https://.cfargotunnel.com→ 输入 ttyd 用户名密码 → 就是一个完整的服务器 shell。5. 注意事项(划重点)
1. ttyd 必须加
-W:否则网页终端只能看不能输。2. 改代码流程:SFTP 上传 → Restart(小改)或 Deploy Production(改依赖),平台不会自动热重载。
本文为技术学习交流用途,请遵守所在地区法律法规及平台服务条款。有问题欢迎评论区交流。
主楼 - btpp032026-08-0964676
支持大佬发帖,有账号的兄弟冲!可惜账号实在是太难注册了。
- zvtd2026-08-0964675
都忘记说注册的事了,重点是用指纹浏览器+纯净度高的ip
- 老2026-08-1164677
必须学习一波,感谢大佬的无私分享