CodeRed创建与ssh登录

zvtd 2026-08-09 18:27 1

【教程】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.cloud`


2. 找到你的站点 → 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(改依赖),平台不会自动热重载。





本文为技术学习交流用途,请遵守所在地区法律法规及平台服务条款。有问题欢迎评论区交流。


最新回复 (3)
  • btpp03 08-09 22:39
    1

    支持大佬发帖,有账号的兄弟冲!可惜账号实在是太难注册了。

  • zvtd 楼主 08-09 22:58
    2

    都忘记说注册的事了,重点是用指纹浏览器+纯净度高的ip

  • 08-11 06:56
    3

    必须学习一波,感谢大佬的无私分享

* 帖子来源Linux.do
返回