go to index

github action使用ssh登录远程主机操作步骤

read time 2 min read
github action ssh

概述

本文将介绍如何配置 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 中:

  1. 进入 GitHub 仓库页面。
  2. 点击左侧菜单中的 Settings
  3. 选择 Secrets and variables -> Actions
  4. 点击 New repository secret
  5. 将私钥内容粘贴到值字段中,并命名为 SSH_PRIVATE_KEY

添加 Secret

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
            # 其他需要执行的命令