为本地项目通过ssh配置gitee和github两个remote repository并解决Permission denied(publicKey)问题

需求:我有一个本地的git项目imooc-dubbo

想把其添加两个remote repository,一个在码云上,一个在github上,并且都配置好ssh

是在windows下进行配置的

1. 为github配置

首先在项目目录上 执行git bash

先执行ssh -T git@github.com

参考:Testing your SSH connection

如果其直接连接不上,那么说明公钥配置不成功

 

那么接下来配置公钥

在.ssh文件夹下执行git bash

ssh-keygen -t rsa -C "constfafa@gmail.com"

生成两个文件,一个是id_rsa,另一个是id_rsa.pub

第一步:将pub内容设置到github中

配置好公钥后,再执行ssh -T git@github.com也该就可以连接上了

然后git remote add git@xxx.git

执行git pull命令

应该是会报错的

Permission denied(publicKey)

注意我们另外的一个生成文件还没有使用

也就是要执行第二步:配置publicKey

我们可以执行一下

ssh -vT git@github.com

来看一下具体报错的地方

参考:Error: Permission denied (publickey)

eval $(ssh-agent)

ssh-add "C:\Users\Administrator\.ssh\id_rsa"

 

然后再执行一下

ssh -vT git@github.com

这样就说明ssh配置成功了

但是注意:这种方式只在当前git bash session中有效

“ssh-add 这个命令不是用来永久性的记住你所使用的私钥的。实际上,它的作用只是把你指定的私钥添加到 ssh-agent 所管理的一个 session 当中。而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了。

如果是为了永久记住对应的私钥是哪个,我们不能依赖 ssh-agent 服务。”

参考:是否必须每次添加ssh-add

那么如何永久性记住呢?

参考:ssh-key git多账户配置

在.ssh下编写config文件,进行如下配置:

# gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee-changliang_boe
    User constfafa
# github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github-constfafa
    User constfafa

其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。

以后如果有我们自己的gitlab,那么也可以在config中添加

 

这样我们再次通过ssh -vT git@github.com来看

2. 为码云配置

配置方式相同,只是把github换为gitee

并在config文件中执行gitee的publicKey位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该错误消息 "git@github.com: Permission denied (publickey). fatal: Could not read from remote repository." 表明在尝试使用git命令时出现了权限问题,导致无法读取远程仓库。 这个错误通常是因为未正确配置或提供了正确的SSH密钥。SSH密钥用于身份验证,以便与远程仓库进行通信。 要解决问题,您可以按照以下步骤进行操作: 1. 确认您已经生成了正确的SSH密钥对。您可以通过运行以下命令来检查是否已经生成了SSH密钥对: ``` ls -al ~/.ssh ``` 如果没有生成SSH密钥对,您可以使用以下命令生成: ``` ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 请将"your_email@example.com"替换为您在GitHub上注册时使用的电子邮件地址。 2. 确保您已经将公钥添加到GitHub帐户。您可以使用以下命令来复制并显示公钥: ``` cat ~/.ssh/id_rsa.pub ``` 您需要将输出的公钥内容复制到GitHub帐户的SSH密钥设置中。 3. 确认您的本地git仓库的远程URL是否正确。您可以使用以下命令来检查远程URL: ``` git remote -v ``` 如果远程URL不正确,您可以使用以下命令来更改远程URL: ``` git remote set-url origin <new_remote_url> ``` 将"<new_remote_url>"替换为正确的GitHub仓库URL。 完成上述步骤后,再次尝试使用git push命令进行推送操作,应该就能够成功连接到远程仓库并推送您的更改了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [git@github.com: Permission denied (publickey).](https://blog.csdn.net/helloasimo/article/details/123778112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.](https://blog.csdn.net/weixin_37707670/article/details/120616809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值