Ubuntu物理机克隆GitHub仓库需输入用户名密码的原因及解决方法
Ubuntu物理机克隆GitHub仓库需输入用户名密码的原因及解决方法
嗨,我来帮你捋捋这个问题哈~ 你在VM里克隆仓库不用输密码,到物理机上却要,大概率是这几个原因,对应解决方法也给你列出来了:
一、问题原因拆解
- Git远程协议不一致:你VM里克隆仓库时,大概率用的是SSH协议地址(格式是
git@github.com:xxx/xxx.git),而物理机上可能默认选了HTTPS协议(https://github.com/xxx/xxx.git)。GitHub现在对HTTPS克隆不再支持直接输账户密码登录,必须用个人访问令牌(PAT);而SSH只要密钥配置好,就能免密验证。 - 物理机未配置SSH密钥:VM里你应该已经生成过SSH密钥,并且把公钥添加到了你的GitHub账户里,所以克隆SSH地址的仓库时自动通过验证;但新的物理机Ubuntu系统还没做这个步骤,所以要么SSH连接失败,要么用HTTPS就会提示要凭证。
- Git凭据缓存差异:VM里可能配置了Git的凭据缓存功能,暂时保存了你的登录信息;物理机是全新系统,没这个配置,所以每次克隆都得手动输入。
二、解决方法(两种主流方案任选)
方案一:改用SSH协议克隆(推荐,一劳永逸)
这是最省心的方式,配置一次之后所有仓库克隆/推送都不用输凭证:
- 在物理机终端生成SSH密钥:
运行这条命令,把邮箱换成你GitHub绑定的邮箱,一路回车用默认设置就行:
ssh-keygen -t ed25519 -C "your_email@example.com"- 在物理机终端生成SSH密钥:
- 将公钥添加到GitHub账户:
- 先查看公钥内容,复制全部输出:
cat ~/.ssh/id_ed25519.pub - 登录你的GitHub账号,进入「Settings」→「SSH and GPG keys」→「New SSH key」,把复制的公钥粘贴进去,随便填个标题(比如“物理机Ubuntu”),然后保存。
- 验证SSH连接是否成功:
运行这条命令,出现提示输入yes确认:
如果看到ssh -T git@github.comHi [你的GitHub用户名]! You've successfully authenticated, but GitHub does not provide shell access.就说明配置成了。- 验证SSH连接是否成功:
- 之后克隆仓库就用SSH地址,比如:
再也不会弹框要密码啦~git clone git@github.com:你的用户名/仓库名.git
方案二:配置HTTPS的个人访问令牌(PAT)
如果你习惯用HTTPS协议,可以这么操作:
- 生成GitHub个人访问令牌(PAT):
登录GitHub,进入「Settings」→「Developer settings」→「Personal access tokens」→「Tokens (classic)」→「Generate new token」。勾选repo权限(这是克隆/推送仓库必需的),设置合适的过期时间,然后点击生成,一定要把这个令牌复制保存好,页面关了就再也看不到了。
- 生成GitHub个人访问令牌(PAT):
- 克隆仓库时的验证:
用HTTPS地址克隆时,提示输入用户名就填你的GitHub用户名,密码就填刚才生成的PAT。
- 克隆仓库时的验证:
- 配置Git凭据缓存,避免重复输入:
要是不想每次克隆都输PAT,可以让Git缓存起来:
- 临时缓存15分钟:
git config --global credential.helper cache - 长期缓存一周(时间单位是秒,604800秒=7天):
git config --global credential.helper 'cache --timeout=604800' - 永久存储到本地文件(注意:这个会明文存在
~/.git-credentials里,安全性稍低,谨慎使用):git config --global credential.helper store
- 配置Git凭据缓存,避免重复输入:
额外小技巧:修改已克隆仓库的远程协议
如果物理机上已经用HTTPS克隆了仓库,不想重新克隆,可以直接修改远程地址为SSH:
git remote set-url origin git@github.com:你的用户名/仓库名.git
备注:内容来源于stack exchange,提问作者Private Owner




