Git 总是出现权限拒绝的情况(个人笔记)

此文仅代表我自己的查阅和理解并作为笔记,并不能作为指导内容。#

问题产生的环境:
在 Homestead 开发环境下做完了 实战入门 ,开始向 实战进阶 进发
新建 Laravel 项目并且在我的 Github 创建一个名为 LaraBBS 的仓库之后之后执行

$ git init 
$ git add -A
$ git commit -m '初始化'
$ git remote add origin git@github.com:#####/LaraBBS.git
$ git push origin master

这时候就会提示我没权限

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

接下来是我的解决思路:

  • 方案一:
    翻阅到第一课的 Github 部署部分执行以下代码 (既然做了就做全…)

        # 检查 git 配置
        $ git config user.name
        $ git config user.email
    
        # 重新生成一次公钥
        $ eval  "$(ssh-agent -s)" 
        $ ssh-add ~/.ssh/id_rsa
        $ cat ~/.ssh/id_ras.pub

    然后复制 id_ras.pub 的公钥内容,在 Github 的 SSH and GPG keys 选项里新增一个 SSh Keys , 这时候再执行

     $ ssh -T git@github.com    # 检测是否通讯成功
     $ git push origin master

    成功的将代码托管到 Github 的 LaraBBS 库里了!

    接下来我去百度为什么每个项目都要单独执行一次 eval "$(ssh-agent -s)" 而这句话是什么意思,以下内容来自我的查询到有意义的解释
    生成新 SSH 密钥并添加到 ssh-agent
    但是这并没有解决为什么每个项目都要再添加一遍 SSHKey 的问题。

  • 方案二:

     $ vim /etc/bash.bashrc

    在打开的文件最后换行添加两句

     $ eval "$(ssh-agent -s)"
     $ ssh-add ~/.ssh/id_rsa

    之后 Git 就会自己添加 SSHKey 到密钥里面去了
    那么问题来了…
    GitHub 上面还要再换一次吗?:cry:

    请大家帮我解惑#

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

我也是,有时候用 homestead 的时候,向 github 上 push 的时候,突然发现不能提交,没权限,后来就总是执行一下 eval "$(ssh-agent -s)" 还挺麻烦的的,有什么一劳永逸的办法,这样设置 ssh 之后就不用输入密码或者用什么其他的命令了

4年前 评论

请问楼主 你的疑问验证解决了吗?

是不是每建立一个新项目都需要追加新的 ssh 密钥?

我猜想应该是不需要追加新密钥的吧

毕竟本地生成了新密钥会覆盖掉旧的密钥文件 导致 Github 上以前项目的 ssh 密钥失效 这样的神奇操作 GitHub 应该不会犯

4年前 评论