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

配置SSH与ssh-agent部署遇阻:BitBucket替代GitHub适配问题

解决Capistrano部署时Bitbucket SSH密钥转发问题

你遇到的核心问题是本地仓库用了HTTPS协议的远程地址,而Capistrano依赖SSH密钥转发机制让服务器访问代码仓库,HTTPS协议没法利用这个机制;再加上无密码短语的密钥可能没被ssh-agent正确加载,最终导致验证失败。下面是一步步的解决方法:

1. 将本地仓库的远程地址切换为SSH协议

Bitbucket的SSH仓库地址格式是git@bitbucket.org:用户名/仓库名.git,你需要把当前的HTTPS地址替换成这个:

git remote set-url origin git@bitbucket.org:myfirm/myproject.git

执行完后验证一下:

git config remote.origin.url

输出应该是git@bitbucket.org:myfirm/myproject.git,和文档里GitHub的SSH格式一致。

2. 确保你的SSH密钥被ssh-agent加载

虽然你的密钥没有设置密码短语,但有些系统不会自动加载无密码的密钥,所以需要手动确认:

  • 先查看当前ssh-agent里加载的密钥:
    ssh-add -l
    
  • 如果看不到你的密钥(比如~/.ssh/id_rsa),就手动添加:
    ssh-add ~/.ssh/id_rsa
    
    因为没有密码短语,执行后不会弹出密码输入框,直接完成加载。

3. 重新测试服务器上的仓库访问

现在用SSH地址执行测试命令:

ssh -A deploy@myproject.net 'git ls-remote git@bitbucket.org:myfirm/myproject.git'

这个命令应该能正常返回仓库的分支和标签信息,说明服务器已经通过ssh-agent转发的密钥成功访问Bitbucket了。

4. 同步Capistrano配置里的仓库地址

最后检查你的Capistrano配置文件(比如deploy.rb),确保repo_url设置的是SSH地址:

set :repo_url, 'git@bitbucket.org:myfirm/myproject.git'

补充说明

  • 同事能正常部署,正是因为他们用了SSH协议+ssh-agent转发,和文档的流程匹配;而你用HTTPS的话,服务器环境无法自动输入Bitbucket密码,所以会报错。
  • 无密码短语的密钥本身不影响转发,但必须确保它被ssh-agent加载,否则服务器拿不到你的密钥权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:33:09