Linux下通过SSH免密访问Bitbucket.org遇仓库权限拒绝问题求助
我来帮你一步步排查这个困扰你的问题——你已经做了基础配置,但还是遇到权限拒绝,大概率是几个容易忽略的细节出了问题,咱们逐个检查:
1. 先直接测试SSH与Bitbucket的连接
首先跳过Git,直接验证SSH能不能和Bitbucket正常握手,这能帮你快速定位是SSH层的问题还是Git配置的问题。在终端执行:
ssh -T git@bitbucket.org
- 如果输出类似
logged in as <你的Bitbucket用户名>.,说明SSH连接完全正常,问题出在Git的其他配置上; - 如果输出错误信息(比如"Permission denied (publickey)"),那咱们就聚焦在SSH密钥的配置上。
2. 检查SSH密钥的权限与路径
你已经把.ssh目录设为700了,但私钥文件的权限要求更严格,必须是600(只有自己能读写),否则SSH会拒绝使用它。执行命令修正权限:
chmod 600 ~/.ssh/id_rsa
如果你用的不是默认的id_rsa密钥(比如自定义了密钥文件名),需要在~/.ssh/config里明确告诉SSH连接Bitbucket时用哪个密钥:
Host bitbucket.org IdentityFile ~/.ssh/你的自定义密钥文件名 User git
保存后再重新测试SSH连接。
3. 确认Bitbucket上的公钥配置
登录你的Bitbucket账号,进入「个人设置」→「SSH keys」,检查:
- 你添加的公钥是不是本地
~/.ssh/id_rsa.pub(或对应自定义密钥的.pub文件)里的完整内容——不要漏掉开头的ssh-rsa、中间的密钥字符串,也不要多添换行或空格; - 这个公钥是绑定在拥有该仓库访问权限的账号下的:如果仓库是团队所有,要确保你的账号在团队里有读写权限,且公钥是添加在你个人的SSH密钥列表里,不是团队的。
4. 验证Git远程仓库的URL配置
虽然你已经修改了URL,但再确认一遍避免手滑出错:
git remote -v
检查输出里kss1的URL是不是完全正确:git@bitbucket.org:<你的Bitbucket用户名>/kss1,注意这里的<你的Bitbucket用户名>是你Bitbucket账号的用户名(不是邮箱),仓库名称也要和Bitbucket上的完全一致(包括大小写,虽然Bitbucket不严格区分,但Git本地可能会有识别问题)。
5. 清除SSH缓存并重新加载密钥
有时候SSH会缓存旧的连接信息,导致新配置的密钥不生效,执行以下命令重置:
ssh-add -D # 清除所有缓存的密钥 ssh-add ~/.ssh/id_rsa # 重新加载你的私钥
之后再测试SSH连接和Git操作。
6. 考虑升级Git版本
你当前用的Git 2.7.4版本比较老旧(发布于2016年),虽然SSH连接主要依赖OpenSSH,但老版本Git可能在解析SSH配置或远程仓库URL时存在兼容性问题。如果前面的步骤都没用,可以尝试升级Git:
sudo apt update sudo apt install git
如果Ubuntu默认源里的版本还是比较老,可以添加Git官方PPA来获取最新版本:
sudo add-apt-repository ppa:git-core/ppa sudo apt update sudo apt install git
内容的提问来源于stack exchange,提问作者Leo Simon

