Bitbucket SSH密钥对问题:可拉取代码但无法推送
解决方案
1. 修正SSH密钥权限
Linux系统对SSH密钥的权限要求严格,权限过宽会导致认证失败,执行以下命令调整:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub
2. 确认SSH连接使用的密钥
执行命令验证当前SSH连接Bitbucket时使用的密钥:
ssh -T git@bitbucket.org
输出内容会显示当前密钥的指纹,对比Bitbucket后台添加的公钥指纹是否一致。若不一致,说明系统未使用你配置的密钥,需手动指定:
- 新建或编辑
~/.ssh/config文件,添加以下内容:
Host bitbucket.org IdentityFile ~/.ssh/你的密钥文件名
保存后重新测试SSH连接。
3. 检查仓库远程URL配置
拉取正常不代表远程URL是SSH格式(HTTPS格式拉取无需权限,但推送需要验证),执行命令查看远程URL:
git remote -v
若显示HTTPS开头的地址,执行命令切换为SSH格式:
git remote set-url origin git@bitbucket.org:你的用户名/仓库名.git
4. 验证Bitbucket权限设置
- 确认添加的公钥是在账户全局设置中,而非仅仓库的部署密钥(部署密钥默认仅拥有只读权限,无法推送)。
- 检查仓库成员权限:确保你的账户在该仓库中拥有写权限(如开发者、管理员角色)。
5. 清除SSH缓存
SSH可能缓存旧的连接信息,执行命令清除并重新加载密钥:
ssh-add -D ssh-add ~/.ssh/你的密钥文件名
内容的提问来源于stack exchange,提问作者Jonathan Hyams
相关产品推荐
相关产品推荐

