概述
本文将介绍如何配置 GitHub Actions 使用 SSH 登录远程主机,并执行命令。通过以下步骤,你可以确保 GitHub Actions 能够安全地与远程服务器进行交互。
步骤详解
1. 在远程主机生成私钥(如果已生成则忽略)
如果远程主机上还没有 SSH 私钥,可以通过以下命令生成:
bash
ssh-keygen
这将在 ~/.ssh/
目录下生成一对密钥文件:id_rsa
(私钥)和 id_rsa.pub
(公钥)。
2. 添加公钥到远程主机的 authorized_keys
将生成的公钥添加到远程主机的 ~/.ssh/authorized_keys
文件中,以允许无密码登录:
bash
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3. 在 GitHub 仓库中添加 Secret
将生成的私钥 (~/.ssh/id_rsa
) 内容复制并添加到 GitHub 仓库的 Secrets 中:
- 进入 GitHub 仓库页面。
- 点击左侧菜单中的 Settings。
- 选择 Secrets and variables -> Actions。
- 点击 New repository secret。
- 将私钥内容粘贴到值字段中,并命名为
SSH_PRIVATE_KEY
。
4. 使用 ssh-action
组件
在 GitHub Actions 工作流文件中使用 appleboy/ssh-action
组件来执行远程命令。以下是一个示例工作流文件:
yaml
name: Deploy to Remote Server
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Executing remote SSH commands using SSH key
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.PORT }}
script: |
whoami
# 其他需要执行的命令