SuperAPI AI 工具集

railway-auth

部署与运维

查看项目

更新于 10-15 10:54

技能介绍

用途

Railway Authentication 用于管理 Railway 在 CLI、API 和 CI/CD 工作流中的认证。Railway 针对不同使用场景支持多种认证方式:交互式登录(面向开发者的基于浏览器的 OAuth)、无浏览器登录(适用于 SSH/Codespaces/无头环境的设备码流程)、API 令牌(用于自动化和 CI/CD 的编程式访问)。

适用时机包括:首次设置 Railway CLI、在 CI/CD 流水线中认证、为自动化创建 API 令牌、验证认证状态、排查认证问题。

主要能力

操作 1:交互式登录

面向本地开发的标准基于浏览器的认证。

命令:

railway login

流程:打开浏览器到 Railway OAuth 页面;使用 GitHub/邮箱认证;CLI 接收认证令牌;令牌存储在 ~/.railway/config.json。

验证:

railway whoami
# Output: Logged in as: your-email@example.com

适用场景:本地开发、首次设置。

操作 2:无浏览器登录

面向无头环境的设备码认证。

命令:

railway login --browserless

流程:CLI 生成设备码;向用户显示 URL 和代码;用户在任何设备上访问 URL;输入代码完成认证;批准后 CLI 接收令牌。

示例输出:

To authenticate, visit: https://railway.app/cli-auth
Enter code: ABCD-1234
Waiting for authentication...

适用场景:SSH 会话、GitHub Codespaces、远程服务器、Docker 容器、任何没有浏览器的环境。

操作 3:基于令牌的认证

使用 API 令牌进行编程式访问和 CI/CD。

令牌类型:

类型 范围 请求头 使用场景
Account Token 所有个人 + 团队资源 Authorization: Bearer <TOKEN> 完整 API 访问
Team Token 仅团队资源 Team-Access-Token: <TOKEN> 团队自动化
Project Token 单个环境 Project-Access-Token: <TOKEN> 限定范围的部署

创建令牌:访问 https://railway.com/account/tokens;点击 "Create Token";选择令牌类型和范围;复制令牌(仅显示一次!)。

使用令牌进行 CLI 认证:

# For Project Tokens
export RAILWAY_TOKEN=<your-project-token>

# For Account/Team Tokens
export RAILWAY_API_TOKEN=<your-account-or-team-token>

# Verify
railway whoami

API 认证:

# Account Token
curl -H "Authorization: Bearer $RAILWAY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { me { name email } }"}' \
  https://backboard.railway.com/graphql/v2

# Project Token
curl -H "Project-Access-Token: $RAILWAY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { projectToken { projectId } }"}' \
  https://backboard.railway.com/graphql/v2

适用场景:CI/CD 流水线、自动化脚本、API 集成。

操作 4:验证认证

检查当前认证状态。

命令:

# Check who you're logged in as
railway whoami

# Check current project context
railway status

# Verify token via API
curl -s -H "Authorization: Bearer $RAILWAY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { me { name } }"}' \
  https://backboard.railway.com/graphql/v2

排查认证问题:

问题 解决方案
"Not logged in" 运行 railway login
"Not Authorized" (API) 检查令牌类型是否与请求头匹配
令牌过期 在 railway.com/account/tokens 创建新令牌
项目上下文错误 运行 railway link 重新关联项目

使用方式

CI/CD 集成

GitHub Actions:

name: Deploy to Railway
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Railway CLI
        run: npm install -g @railway/cli

      - name: Deploy
        env:
          RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
        run: railway up --ci

设置:在 Railway 仪表盘创建 Project Token;在 GitHub 仓库设置中添加为 RAILWAY_TOKEN secret;使用 --ci 标志进行非交互式部署。

GitLab CI:

deploy:
  stage: deploy
  image: node:20
  script:
    - npm install -g @railway/cli
    - railway up --ci
  variables:
    RAILWAY_TOKEN: $RAILWAY_PROJECT_TOKEN
  only:
    - main

令牌安全最佳实践

  • 切勿提交令牌——使用环境变量或密钥管理器
  • 使用最小范围——单项目 CI/CD 使用项目令牌
  • 定期轮换——定期删除并重新创建令牌
  • 监控使用——检查 Railway 仪表盘是否有异常活动
  • 分离环境——为 dev/staging/prod 使用不同令牌

快速参考

任务 命令
登录(浏览器) railway login
登录(无头) railway login --browserless
检查认证 railway whoami
登出 railway logout
设置令牌(CLI) export RAILWAY_TOKEN=xxx
API 认证请求头 Authorization: Bearer <token>

适用场景

  • 首次设置 Railway CLI
  • 在 CI/CD 流水线中认证
  • 为自动化创建 API 令牌
  • 验证认证状态
  • 排查认证问题
  • SSH 会话、GitHub Codespaces、远程服务器、Docker 容器等无浏览器环境

限制

资料未提供具体的价格、收费、平台支持范围或效果数据。令牌创建入口、令牌类型与请求头对应关系、CLI 命令与 API 调用示例均以资料为准,未提及的功能暂未提供。

参考资料

  • token-types.md - 详细的令牌对比与使用
  • token-troubleshooting.md - 常见认证问题与修复

相关技能:railway-api(GraphQL API 自动化)、railway-automation(CI/CD 模式)、railway-project-management(项目设置)。