You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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协议克隆(推荐,一劳永逸)

这是最省心的方式,配置一次之后所有仓库克隆/推送都不用输凭证:

    1. 在物理机终端生成SSH密钥:
      运行这条命令,把邮箱换成你GitHub绑定的邮箱,一路回车用默认设置就行:
    ssh-keygen -t ed25519 -C "your_email@example.com"
    
    1. 将公钥添加到GitHub账户:
    • 先查看公钥内容,复制全部输出:
      cat ~/.ssh/id_ed25519.pub
      
    • 登录你的GitHub账号,进入「Settings」→「SSH and GPG keys」→「New SSH key」,把复制的公钥粘贴进去,随便填个标题(比如“物理机Ubuntu”),然后保存。
    1. 验证SSH连接是否成功:
      运行这条命令,出现提示输入yes确认:
    ssh -T git@github.com
    
    如果看到Hi [你的GitHub用户名]! You've successfully authenticated, but GitHub does not provide shell access.就说明配置成了。
    1. 之后克隆仓库就用SSH地址,比如:
    git clone git@github.com:你的用户名/仓库名.git
    
    再也不会弹框要密码啦~

方案二:配置HTTPS的个人访问令牌(PAT)

如果你习惯用HTTPS协议,可以这么操作:

    1. 生成GitHub个人访问令牌(PAT):
      登录GitHub,进入「Settings」→「Developer settings」→「Personal access tokens」→「Tokens (classic)」→「Generate new token」。勾选repo权限(这是克隆/推送仓库必需的),设置合适的过期时间,然后点击生成,一定要把这个令牌复制保存好,页面关了就再也看不到了
    1. 克隆仓库时的验证:
      用HTTPS地址克隆时,提示输入用户名就填你的GitHub用户名,密码就填刚才生成的PAT。
    1. 配置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
      

额外小技巧:修改已克隆仓库的远程协议

如果物理机上已经用HTTPS克隆了仓库,不想重新克隆,可以直接修改远程地址为SSH:

git remote set-url origin git@github.com:你的用户名/仓库名.git

备注:内容来源于stack exchange,提问作者Private Owner

火山引擎 最新活动