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

使用GitHub Action部署时Capistrano持续要求SSH密码问题

解决Capistrano在VPN+GitHub Action环境下持续索要凭据的问题

核心问题梳理

  • 已通过VPN正常连接目标私有服务器SSH,GitHub Action也能通过SSH密钥连接服务器,但Capistrano部署时始终要求输入凭据
  • 本地部署正常,服务器本地执行cap production deploy同样要求密码
  • 已在deploy.rb中设置set :ssh_options, { forward_agent: true },SSH密钥已配置为仓库Secret

排查与解决方案

1. 修复服务器SSH密钥权限

服务器上的SSH密钥文件权限不符合要求会直接导致认证失败,执行以下命令修正:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/github

2. 确保服务器SSH允许代理转发

检查服务器/etc/ssh/sshd_config配置:

  • 确认AllowAgentForwarding yes(默认可能开启,若被注释需取消)
  • 重启sshd服务使配置生效:
sudo systemctl restart sshd

3. 开启GitHub Action SSH会话的代理转发

在ssh-action的args中添加-A参数,确保代理转发从GitHub Action Runner传递到目标服务器:

args: "-tt -A"

4. 调整GitHub Action的SSH代理流程

无需在服务器上启动新的ssh-agent,而是让Runner的SSH代理通过转发传递给服务器,让Capistrano复用该代理访问GitHub:

- name: Set up SSH agent on Runner
  run: |
    eval "$(ssh-agent -s)"
    # 将访问GitHub的部署密钥添加到Runner的SSH代理
    echo "${{ secrets.GITHUB_DEPLOY_KEY }}" | ssh-add -
- name: Set up SSH and deploy
  uses: fifsky/ssh-action@master        
  with:
    host: ${{ secrets.SSH_HOST }}
    user: deploy
    key: ${{ secrets.SSH_KEY}}
    args: "-tt -A"
    command: |
      cd ./priicer/current
      echo $REPO_URL
      # 修正repo_url的引号,避免变量解析问题
      echo -e "lock '~> 3.17.1'\n\nset :application, 'priicer'\nset :repo_url, '$REPO_URL'\nset :deploy_to, \"/home/deploy/#{fetch :application}\"\nset :ssh_options, { forward_agent: true }" > config/deploy.rb
      BUNDLE_PATH="/home/deploy/.rbenv/shims/bundle" 
      echo "BUNDLE_PATH: $BUNDLE_PATH"
      $BUNDLE_PATH exec cap production deploy

5. 验证服务器SSH访问GitHub的能力

在服务器上手动执行以下命令,确认能无密码访问GitHub:

ssh -T git@github.com

若仍要求密码,说明:

  • 服务器上的密钥未正确关联GitHub账号
  • 代理转发未生效,需重新检查Runner到服务器的代理配置

6. 检查Capistrano配置是否被覆盖

确认config/deploy/production.rb中没有覆盖ssh_options的设置,若存在类似配置需删除或调整:

# 避免此类冲突配置
set :ssh_options, {
  # 与forward_agent冲突的自定义设置
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:58:25