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

GitHub Action使用appleboy/ssh-action如何避免SSH密钥出现在目标服务器

实现方案

1. 优先修复敏感信息存储逻辑(根源解决)

  • 禁止将SSH密码、密钥等敏感信息明文写入.github/workflows下的yml配置文件,改用GitHub官方加密存储功能保管敏感信息:
    • 进入对应GitHub仓库的Settings > Secrets and variables > Actions页面,新增自定义加密密钥,工作流中通过${{ secrets.自定义密钥名 }}的格式调用即可,密钥值不会明文出现在任何代码文件中
    • 清理仓库历史提交中的明文密码记录,避免历史版本留存敏感信息被拉取到服务器

2. 拉取代码时排除敏感目录

如果你不需要在服务器上保留GitHub Action相关配置,可以在拉取代码后直接删除对应目录,修改SSH登录后执行的命令即可:

  • 原有git pull命令调整为组合命令:
    git pull origin 分支名 && rm -rf .github/workflows
  • 如果需要永久排除.github目录,可以配置git稀疏检出规则,后续拉取自动跳过该目录:
# 开启稀疏检出
git config --local core.sparseCheckout true
# 配置规则:拉取所有目录,排除.github目录
echo "/*" >> .git/info/sparse-checkout
echo "!.github/" >> .git/info/sparse-checkout
# 执行拉取
git pull origin 分支名

3. 调整部署流程避免拉取完整仓库

你可以直接在GitHub Action中将需要部署的业务代码打包,通过SCP直接上传到服务器,完全不会传输.git目录、工作流配置等无关文件,从流程上避免敏感文件落地到服务器:

  • 可以配合appleboy/scp-action实现文件上传,不需要在服务器端执行git pull操作

内容的提问来源于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 07:45:04