通过SSH连接GitHub仓库遇权限问题求助
问题解析:GitHub SSH连接的用户名误区
这其实是对GitHub SSH验证机制的小误解,我来给你理清楚:
为什么ssh -T git@github.com能成功?
GitHub的SSH服务器只认git这个专用用户名,它不是通过SSH命令里的用户名识别你的账号,而是通过你提交的SSH公钥来关联到你的GitHub账户。所以当你用git@github.com连接时,服务器验证了你的公钥有效性,确认是你的账号,就会返回那句成功认证的提示——后面说“GitHub does not provide shell access”是完全正常的,因为GitHub本来就不提供SSH shell登录,这个连接只是用来做Git操作的。
为什么ssh -T my-username-here@github.com会失败?
GitHub的SSH服务器上根本没有以你的GitHub用户名命名的用户账号,它只接受git作为连接用户名。你用自己的用户名去连接,服务器找不到对应的用户,自然就会返回“Permission denied (publickey)”的错误啦。
正确的使用方式
平时做Git操作(clone、push、pull等)时,只要你的SSH公钥已经正确添加到GitHub,用git@github.com:你的用户名/仓库名.git这种格式的仓库地址就可以正常工作,完全不用换成自己的用户名。
如果想简化配置,还可以在~/.ssh/config文件里添加这样的条目(没有的话就新建一个):
Host github.com User git IdentityFile ~/.ssh/你的私钥文件名
这样后续连接GitHub时,就不用每次都写git@前缀啦。
内容的提问来源于stack exchange,提问作者Gelo




