| name | github-actions-ssh-deploy |
| description | 交互式配置 GitHub Actions 通过 SSH 密钥连接 VPS 的向导。当用户需要设置 GitHub Actions 部署到 VPS、配置 CI/CD SSH 连接、生成部署 workflow 时使用此 skill。通过问答方式收集必要信息后生成完整配置。 |
GitHub Actions SSH Deploy 配置向导
通过问答式交互,帮助用户完成 GitHub Actions 连接 VPS 的 SSH 配置。
工作流程
阶段一:信息收集
按顺序逐个询问以下信息,每次只问一个问题,等待用户回答后再继续:
必填信息:
- VPS 主机地址 - "请提供 VPS 的 IP 地址或域名:"
- SSH 用户名 - "请提供 SSH 登录用户名:"
- 项目部署路径 - "请提供项目在 VPS 上的部署路径(如 /var/www/myapp):"
- 部署方式 - "请选择部署方式:(1) 执行命令部署 (2) rsync 同步文件 (3) 两者都要"
可选信息(询问是否需要自定义):
- SSH 端口 - "SSH 端口是否为默认的 22?如需自定义请输入端口号,否则回复'是'或直接回车:"
- 触发分支 - "部署触发分支是否为 main?如需其他分支请输入,否则回复'是'或直接回车:"
- 部署命令(如选择命令部署)- "请提供部署时需要执行的命令(可多行):"
- 同步源目录(如选择 rsync)- "请提供需要同步的本地目录(如 ./dist):"
阶段二:信息确认
收集完毕后,以表格形式展示所有配置信息,请用户确认:
配置确认:
┌─────────────┬──────────────────────────┐
│ 配置项 │ 值 │
├─────────────┼──────────────────────────┤
│ VPS 主机 │ {host} │
│ SSH 用户名 │ {user} │
│ SSH 端口 │ {port} │
│ 部署路径 │ {deploy_path} │
│ 触发分支 │ {branch} │
│ 部署方式 │ {deploy_method} │
└─────────────┴──────────────────────────┘
请确认以上信息是否正确?(是/否)
阶段三:生成配置
确认后,按以下顺序输出:
1. SSH 密钥生成命令
ssh-keygen -t ed25519 -C "github-actions-deploy" -f ~/.ssh/github_actions -N ""
2. VPS 配置命令
# 将公钥添加到 VPS(替换 {user} 和 {host})
ssh-copy-id -i ~/.ssh/github_actions.pub {user}@{host}
# 或手动添加
cat ~/.ssh/github_actions.pub | ssh {user}@{host} "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
3. GitHub Secrets 配置清单
输出需要在 GitHub 仓库设置的 Secrets:
| Secret 名称 | 值来源 |
|---|---|
SSH_PRIVATE_KEY |
cat ~/.ssh/github_actions 的输出内容 |
SSH_HOST |
{host} |
SSH_USER |
{user} |
SSH_PORT |
{port}(仅当非默认 22 时需要) |
4. GitHub Actions Workflow 文件
根据用户选择的部署方式生成 .github/workflows/deploy.yml:
命令执行方式模板:
name: Deploy to VPS
on:
push:
branches: [{branch}]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd {deploy_path}
{deploy_commands}
rsync 同步方式模板:
name: Deploy to VPS
on:
push:
branches: [{branch}]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Deploy with rsync
run: |
rsync -avz --delete {source_dir}/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:{deploy_path}/
阶段四:操作指引
生成配置后,提供分步操作指引:
接下来请按以下步骤操作:
1. 在本地终端运行密钥生成命令
2. 运行 VPS 配置命令,将公钥添加到服务器
3. 前往 GitHub 仓库 -> Settings -> Secrets and variables -> Actions
4. 点击 "New repository secret" 添加上述 Secrets
5. 将 workflow 文件保存到项目的 .github/workflows/deploy.yml
6. 提交并推送代码,触发自动部署
测试连接(可选):
ssh -i ~/.ssh/github_actions {user}@{host}
注意事项
- 每次只问一个问题,保持对话简洁
- 对于可选项,提供合理的默认值
- 如果用户提供的信息有明显问题(如路径格式错误),及时指出并请求更正
- 生成的 workflow 文件应直接可用,无需用户额外修改
- 最终输出时创建实际的 .yml 文件供用户下载