当前位置:   article > 正文

Git使用同一个邮箱生成同一个公钥SSH-Key并配置连接Gitee和GitHub,数次失败并尝试亲测可行!_gitee 本地公钥和knows_hosts里的不一样

gitee 本地公钥和knows_hosts里的不一样

一、实现Gitee和GitHub是由同一个邮箱注册的,并且用该邮箱生成一个SSH-Key,用这个SSH-Key分别连接上Gitee和GitHub

1、执行完ssh-keygen命令后,会在C盘用户目录下生成.ssh/id_rsa.ssh/id_rsa.pub

$ ssh-keygen -t rsa -C 'xxxxx@email.com'
  • 1

在这里插入图片描述

id_rsa:私钥文件

id_rsa.pub:公钥文件

known_hosts文件在下面会讲到

2、在同级目录下,新建config文件,可以直接新建文本文档,将其后缀一同删除,改名为config

在这里插入图片描述

3、打开config文件进行编辑,添加内容如下:

# gitee
Host git.oschina.net
User xxxxx@email.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

# github
Host ssh.github.com
User xxxxx@email.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4、查看生成的SSH公钥,并将这个SSH公钥分别设置到Gitee和GitHub中

cat ~/.ssh/id_rsa.pub
  • 1

将显示的SSH公钥复制粘贴到Gitee和Github中添加设置,就不讲怎么添加了。

5、测试连接

$ ssh -T git@gitee.com
$ ssh -T git@github.com
  • 1
  • 2

在第一次连接访问的时候会提示如下信息:

The authenticity of host ‘github.com (20.205.243.166)’ can’t be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

因为 SSH 需要通过 SSH key fingerprint 来验证远端 host 的真实性,这个时候我们需要输入 y,并按回车即可,同时会在当前目录下(~/.ssh/ 目录下)生成 known_hosts 文件。

访问不同IP机器时会在 known_hosts 文件中保存每一次访问连接的信息。

known_hosts:访问过的机器的公钥,第一次 ssh 其他机器时如果有权限访问,会提示是否保存信息,下次会校验访问该机器的公钥与known_hosts中的是否一致,如果不一致则不能登录过去。

分别出现以下结果则说明访问连接成功。

在这里插入图片描述

二、实现Gitee和GitHub是由同一个邮箱注册的,并且用该邮箱生成两个SSH-Key,分别用这两个SSH-Key连接上Gitee和GitHub

可以参照:Gitee 帮助中心:Git配置多个SSH-Key码云(Gitee.com)帮助文档 V1.2

1、与前面的差不多,无非就是生成了两个不同的Key

$ ssh-keygen -t rsa -C 'xxxxx@email.com' -f ~/.ssh/gitee_id_rsa
$ ssh-keygen -t rsa -C 'xxxxx@email.com' -f ~/.ssh/github_id_rsa
  • 1
  • 2

前面第一种情况是默认生成id_rsa,这里对两个不同的SSH_Key对应Gitee和GitHub起了不同的名字,后续操作与前面第一种情况相同,另外切记相对应的文件名称要统一,配置文件中私钥文件名要相对应IdentityFile ~/.ssh/gitee_id_rsaIdentityFile ~/.ssh/github_id_rsa

另外是config配置文件的相关说明:

Git在本地提交到远程库上时,会读取ssh的公钥秘钥信息。

如果在~/.ssh/目录下有对应config配置文件则会优先读取config的配置信息,否则直接读取id_rsaid_rsa.pub

config配置文件 (~/.ssh/config):

Host xxx                       #ssh别名

HostName gitlab.xxx.com/IP     #要连接的gitlab地址或主机名

User xxx@xxx.com               #账号,要与git config的email对应

IdentityFile ~/.ssh/id_rsa     #要使用的ssh私钥
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

通过config文件可以管理多个ssh会话。通过Host别名也可以直接[ssh 别名]登录到其他机器上

相关参考:git ssh免登陆以及ssh config
SSH key fingerprint与know_hosts文件

如有错误之处或有补充,欢迎评论区分享指出!谢谢!
转载请贴明出处

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/408976
推荐阅读
相关标签
  

闽ICP备14008679号