# 阿里云 ECS 配置

# 1. 新增密钥对

在阿里云 ECS 控制台的 密钥对管理 页面创建新密钥对:

  • 下载生成的 key.pem 文件(私钥),该文件将用于后续连接服务器
  • 密钥对绑定实例后,服务器会自动在 ~/.ssh/authorized_keys 中写入公钥

# 2. 开放防火墙端口

在安全组配置中添加入方向规则,开放项目所需端口(如 8044322 ):

  • 授权对象建议设置为 0.0.0.0/0 (全开放)或指定可信 IP 段

# 服务器配置

# 1. 配置 SSH 密钥对

# 步骤一:sh 密钥对生成

ssh-keygen -t rsa -b 4096

执行完上面的命令,会生成两个文件,分别为 ~/.ssh/id_rsa(私钥)~/.ssh/id_rsa.pub(公钥)

# 步骤二:处理阿里云提供的密钥文件

  • 将下载的 key.pem 内容覆盖本地 ~/.ssh/id_rsa (私钥文件):
    1
    2
    cat /path/to/key.pem > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa # 确保私钥仅用户可读
  • 阿里云会自动将公钥写入服务器 ~/.ssh/authorized_keys ,同时将 ~/.ssh/authorized_keys 的内容也复制到 ~/.ssh/id_rsa.pub(公钥)

1
cat ~/.ssh/authorized_keys > ~/.ssh/id_rsa.pub(公钥)

# 步骤三:启用公钥认证

编辑 SSH 客户端配置:

1
2
3
vim /etc/ssh/sshd_config
# 添加以下内容
PubkeyAuthentication yes

# 2. Github Action 配置

在 Github 仓库 Settings > Secrets > Actions 中添加以下机密:

名称描述值来源
PRIVATE_KEY阿里云 key.pem 内容复制文件全文(含首尾标记)
HOST服务器公网 IP阿里云实例详情页
USER服务器登录用户默认为 root 或自定义用户

# Github Action 工作流文件(main.yml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
name: 自动化部署
on:
push:
branches:
- main # 触发部署的分支

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v3
- name: 安装 Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x # 指定项目所需 Node.js 版本
- name: 安装依赖并打包
run: |
npm install
npm run build # 替换为项目实际构建命令
- name: 上传静态资源到服务器
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
# SCP 参数说明:
# -a: 保留文件属性,-v: 详细日志(调试用),-z: 压缩传输,--delete: 同步时删除服务器多余文件
ARGS: "-avz --delete"
SOURCE: "public/" # 构建输出目录(根据项目调整,如 Vue 项目为 dist)
REMOTE_HOST: ${{ secrets.HOST }}
REMOTE_USER: ${{ secrets.USER }}
TARGET: /www/project # 服务器目标目录(需提前创建,确保用户有写入权限)