如何配置`hub create`的SSH凭证?排查hub create 401未授权错误
hub create的SSH凭证配置与HTTP协议问题 首先,你遇到的HTTP 401 Unauthorized错误,大概率是因为hub默认使用了HTTP协议而非SSH来连接GitHub,哪怕你已经配置了SSH密钥。咱们一步步来排查和解决:
一、确认SSH密钥是否正确加载并生效
检查已加载的SSH密钥
打开终端执行:ssh-add -l如果输出里没有你为GitHub生成的公钥指纹,说明密钥没加载到SSH代理里。执行以下命令加载(替换成你的密钥文件名,比如
id_rsa):ssh-add ~/.ssh/id_rsa如果你用的是macOS,想让密钥重启后自动加载,可以加上
-K参数:ssh-add -K ~/.ssh/id_rsa测试SSH连接GitHub
执行以下命令验证SSH是否能正常访问GitHub:ssh -T git@github.com如果看到类似
Hi YourUsername! You've successfully authenticated, but GitHub does not provide shell access.的输出,说明SSH凭证完全没问题。
二、检查Git为何使用HTTP协议
查看当前仓库的远程配置
在你的本地仓库目录下执行:git remote -v如果输出的
origin地址是https://github.com/YourUsername/YourRepo.git这种HTTP格式,那当前仓库确实在用HTTP协议连接GitHub。检查全局Git配置是否强制HTTP
执行以下命令查看全局配置:git config --global --list留意有没有类似
url.https://github.com/.insteadOf=git@github.com:或者hub.protocol=https的配置项——这些会强制Git或hub使用HTTP协议。
三、配置hub使用SSH协议
全局设置hub默认用SSH
执行以下命令让hub所有操作默认使用SSH:git config --global hub.protocol ssh修改当前仓库的远程地址为SSH格式
如果当前仓库的远程还是HTTP,执行以下命令替换(替换成你的用户名和仓库名):git remote set-url origin git@github.com:YourUsername/YourRepo.git
四、额外排查:清除可能的HTTP凭证缓存
如果之前用过HTTP方式访问GitHub,系统可能缓存了错误的凭证。比如macOS用户可以执行以下命令清除GitHub的HTTP凭证:
git credential-osxkeychain erase host=github.com protocol=https
输入完后按回车两次即可清除。
现在再尝试执行hub create -p,应该就能正常创建私有仓库了。
内容的提问来源于stack exchange,提问作者GameKyuubi

