fix(ci): 修正 preview-deploy 默认 SSH host/user 为正确值 #613

Merged
auto-approve-bot merged 1 commits from fix/preview-deploy-defaults into develop 2026-07-19 20:46:59 +08:00
Owner

问题

preview-deploy.yml 中 SSH 连接的默认值有误:

  • 默认 HOST 是内网 IP 172.30.18.197,Runner 容器访问不到
  • 默认 USER 是 deploy,服务器实际用户是 root

修改

  • PREVIEW_SSH_HOST 默认值从 172.30.18.19747.98.113.167(公网IP)
  • PREVIEW_SSH_USER 默认值从 deployroot

端口默认值本来就是 22222,无需修改。

注:同步已更新 Gitea Secrets 中所有 SSH 密钥为新生成的可用密钥对(ssh-ed25519)。

## 问题 preview-deploy.yml 中 SSH 连接的默认值有误: - 默认 HOST 是内网 IP `172.30.18.197`,Runner 容器访问不到 - 默认 USER 是 `deploy`,服务器实际用户是 root ## 修改 - `PREVIEW_SSH_HOST` 默认值从 `172.30.18.197` → `47.98.113.167`(公网IP) - `PREVIEW_SSH_USER` 默认值从 `deploy` → `root` 端口默认值本来就是 `22222`,无需修改。 注:同步已更新 Gitea Secrets 中所有 SSH 密钥为新生成的可用密钥对(ssh-ed25519)。
xiaoxia added 1 commit 2026-07-19 20:41:05 +08:00
fix(ci): 修正 preview-deploy 默认 SSH host 和 user 为正确值
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 2m14s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 47s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m33s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m44s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 4m32s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m0s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m45s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m50s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 41s
eb63e6ab10
- 默认 HOST 从内网 172.30.18.197 改为公网 47.98.113.167
- 默认 USER 从 deploy 改为 root(服务器实际用户)
Collaborator

📊 审查概览

  • 整体评价:需修改
  • 严重问题数量:2 个
  • 一般建议数量:1 个

需修改的问题(严重)

  1. [.gitea/workflows/preview-deploy.yml: 160] 默认用户设置为 root 存在严重安全风险

    • 问题描述:将 SSH 用户的默认值从 deploy 修改为 root 违反了最小权限原则。如果 CI 环境变量 PREVIEW_SSH_USER 未正确配置或为空,脚本将以 root 权限执行部署操作。这可能导致误操作破坏系统环境,且增加了被攻击后的破坏面。
    • 修改建议:保持默认用户为 deploy 或其他非特权用户。如果确实需要 root 权限执行某些操作,应在目标服务器上通过 sudo 配置白名单,而不是直接使用 root 用户登录。
  2. [.gitea/workflows/preview-deploy.yml: 159] 硬编码公网 IP 暴露基础设施并增加攻击面

    • 问题描述:将默认主机 IP 从内网地址 172.30.18.197 修改为公网地址 47.98.113.167。这不仅将服务器地址暴露在代码仓库中,还使得部署流量暴露在公网,增加了被中间人攻击或扫描攻击的风险。之前的内网 IP 配置更为安全。
    • 修改建议:将 IP 地址配置在 Gitea 的 Secrets (PREVIEW_SSH_HOST) 中,不要在代码中硬编码公网 IP。如果必须保留默认值,建议使用内网地址或移除默认值以强制要求配置 Secret。

💡 改进建议(一般)

  1. [.gitea/workflows/preview-deploy.yml: 159-160] 移除默认值以避免静默错误
    • 具体内容:建议移除 Shell 变量中的默认值(即去掉 :-... 部分)。如果关键的环境变量(如 Host 或 User)缺失,应该让流程直接报错失败,而不是静默地回退到一个硬编码的值(尤其是错误的或不安全的值),这样可以防止部署到错误的目标服务器。

良好实践

  • 脚本开头使用了 set -eux,能够在命令执行失败或变量未定义时及时终止,这是良好的 Shell 脚本编写习惯。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 20:43:20 | 模型:

### 📊 审查概览 - 整体评价:需修改 - 严重问题数量:2 个 - 一般建议数量:1 个 ### ❌ 需修改的问题(严重) 1. **[.gitea/workflows/preview-deploy.yml: 160] 默认用户设置为 root 存在严重安全风险** - 问题描述:将 SSH 用户的默认值从 `deploy` 修改为 `root` 违反了最小权限原则。如果 CI 环境变量 `PREVIEW_SSH_USER` 未正确配置或为空,脚本将以 root 权限执行部署操作。这可能导致误操作破坏系统环境,且增加了被攻击后的破坏面。 - 修改建议:保持默认用户为 `deploy` 或其他非特权用户。如果确实需要 root 权限执行某些操作,应在目标服务器上通过 `sudo` 配置白名单,而不是直接使用 root 用户登录。 2. **[.gitea/workflows/preview-deploy.yml: 159] 硬编码公网 IP 暴露基础设施并增加攻击面** - 问题描述:将默认主机 IP 从内网地址 `172.30.18.197` 修改为公网地址 `47.98.113.167`。这不仅将服务器地址暴露在代码仓库中,还使得部署流量暴露在公网,增加了被中间人攻击或扫描攻击的风险。之前的内网 IP 配置更为安全。 - 修改建议:将 IP 地址配置在 Gitea 的 Secrets (`PREVIEW_SSH_HOST`) 中,不要在代码中硬编码公网 IP。如果必须保留默认值,建议使用内网地址或移除默认值以强制要求配置 Secret。 ### 💡 改进建议(一般) 1. **[.gitea/workflows/preview-deploy.yml: 159-160] 移除默认值以避免静默错误** - 具体内容:建议移除 Shell 变量中的默认值(即去掉 `:-...` 部分)。如果关键的环境变量(如 Host 或 User)缺失,应该让流程直接报错失败,而不是静默地回退到一个硬编码的值(尤其是错误的或不安全的值),这样可以防止部署到错误的目标服务器。 ### ✅ 良好实践 - 脚本开头使用了 `set -eux`,能够在命令执行失败或变量未定义时及时终止,这是良好的 Shell 脚本编写习惯。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 20:43:20 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

项目 详情
PR号 #613
预览链接 https://pr-613.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #613 | | 预览链接 | [https://pr-613.preview.xiaoxiajianji.com](https://pr-613.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-07-19 20:45:54 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-19 20:45:54 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 7aad69435c into develop 2026-07-19 20:46:59 +08:00
auto-approve-bot deleted branch fix/preview-deploy-defaults 2026-07-19 20:46:59 +08:00

🗑️ 预览环境已清理

PR #613 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #613 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.