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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

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

5年前 评论

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

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

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

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

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!