You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Action中通过SSH访问服务器并正确处理SSH密钥

GitHub Action SSH 密钥配置方案

你不需要依赖GitHub生成密钥,自行在本地生成密钥对后分别配置到服务器和GitHub仓库即可,完整配置步骤如下:

1. 本地生成SSH密钥对

打开本地终端执行命令:
ssh-keygen -t ed25519 -C "github-action-auto-deploy" -f ./github-action-ssh
执行时按两次回车跳过passphrase设置(设置密码后工作流无法自动完成SSH校验),执行完成后会在当前目录生成两个文件:

  • github-action-ssh:私钥文件,需要存储到GitHub
  • github-action-ssh.pub:公钥文件,需要上传到目标服务器

2. 配置目标服务器公钥

将公钥文件的全部内容,追加到目标服务器登录账号的~/.ssh/authorized_keys文件末尾,同时确保权限配置正确:

# 服务器端执行
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

权限配置错误会导致SSH连接被拒绝。

3. 配置GitHub仓库私钥

进入对应GitHub仓库的设置页,依次点击「Settings」→「Secrets and variables」→「Actions」→「New repository secret」:

  • 名称填写SSH_PRIVATE_KEY
  • 内容填写本地生成的github-action-ssh私钥文件的全部内容
    保存后该密钥会在工作流中以加密形式调用,不会在日志中明文展示。

4. 调整工作流配置

在你现有的工作流yaml文件中,执行自定义脚本的步骤之前,新增SSH配置步骤:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      # 拉取代码步骤省略,你原来的配置保留即可
      - name: 配置SSH运行环境
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          # 添加目标服务器到可信列表,避免首次连接交互确认
          ssh-keyscan 替换为你的服务器IP或域名 >> ~/.ssh/known_hosts
          chmod 644 ~/.ssh/known_hosts
      # 这里放你原来执行自定义脚本的步骤
      - name: 执行自定义脚本
        run: bash ./你的脚本名称.sh

配置完成后你的脚本内的SSH命令就可以正常连接服务器执行操作了。

注意事项
  • 绝对不要将私钥明文提交到代码仓库,所有敏感信息必须通过GitHub Secrets存储
  • 如果你的SSH服务使用非默认22端口,需要在ssh-keyscan命令后添加-p 你的SSH端口号参数,同时脚本内的SSH命令也要同步调整端口参数
  • 服务器防火墙需要放行GitHub Action的IP段对SSH端口的访问,否则会出现连接超时问题

内容的提问来源于stack exchange,提问作者Maik Lowrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:54:03