Git克隆仓库失败:用户名大小写引发权限拒绝问题
Git/Gerrit 用户名大小写导致权限拒绝问题解决
问题描述
新电脑安装Git和Gerrit后,克隆仓库时返回Permission denied (publickey).,排查发现命令中的用户名被自动转为大写:
git clone ssh://MYUSERNAME@ast-gerrit-ssh.xxxxxx.net:29256/xxx/repo
改用小写用户名则可正常执行:
git clone ssh://myusername@ast-gerrit-ssh.xxxxxx.net:29256/xxx/repo
推送代码时也存在同样问题,命令中的用户名自动变为大写。修改Git配置的user.name为大写后,git config --list | grep user.name显示生效,但Gerrit账户用户名始终为小写。
解决办法
1. 配置SSH强制指定小写用户名
编辑SSH配置文件:
- Windows:
C:\Users\<你的用户名>\.ssh\config - Linux/macOS:
~/.ssh/config
添加针对Gerrit服务器的配置,强制使用小写用户名:
Host ast-gerrit-ssh.xxxxxx.net User myusername Port 29256 IdentityFile ~/.ssh/你的私钥文件名
后续克隆时可简化命令为git clone ssh://ast-gerrit-ssh.xxxxxx.net:29256/xxx/repo,SSH会自动应用配置的小写用户名。
2. 修正现有仓库的远程地址
如果已克隆仓库,执行以下命令替换远程地址中的大写用户名为小写:
git remote set-url origin ssh://myusername@ast-gerrit-ssh.xxxxxx.net:29256/xxx/repo
修改后推送代码将使用正确的小写用户名。
3. 区分Git提交用户名与SSH连接用户名
Git的user.name是代码提交时的作者标识,和SSH连接Gerrit的用户名是独立配置,无需将user.name改为大写,保持与Gerrit账户一致的小写即可。
内容的提问来源于stack exchange,提问作者Erik Hilberg
相关产品推荐
相关产品推荐

