多个ssh秘钥导致Git push失败及其解决方案
前言
自从上次更换Mac,导致Hexo文件丢失后居然已经N年没有写Blog,最近心血来潮打算重新开始拾起来,于是便新建了一个Hexo将以前的替换,重新开始,索性便将遇到的问题当做这个Blog的第一篇吧。
解决方案请直接看最后,中间都是无用废话
起因
因为向GitHub推送内容需要ssh秘钥,但是我本地已经有了gitlab的秘钥,我又不想替换于是便Google一下如何配置多个ssh秘钥,命令如下:
1 |
|
比如要生成GitHub的ssh就可以这样:
1 |
|
我看完命令后直接生成完秘钥就关闭网页,这就导致我后面的一系列踩坑,不过幸亏有ChatGPT让我的坑踩得容易多了, 当然这都是后话了。
然后我就继续搭建Blog,当本地预览没问题后,我hexo d
后终端开始报错:
1 |
|
继续使用ssh -T git@github.com
发现并没有出现success,猜想可能是秘钥生成错误,但是检查一遍后发现并不是,继续使用ssh -vT git@github.com
查看log,发现查找本地秘钥的时候并没有找到有别名的ssh秘钥,所以大概知道问题出在哪了。
过程
直接ChatGPT开问,它直接告诉我三条命令
- 打开终端并运行以下命令:
1 |
|
- 确保 ssh-agent 正在运行。如果输出显示了 “Agent pid” 和一个数字,则说明 ssh-agent 正在运行。如果没有输出,则说明 ssh-agent 没有启动,您需要重新运行上述命令。
- 将 SSH 私钥文件添加到 ssh-agent 中。运行以下命令:
1 |
|
- 复制您的 SSH 公钥。运行以下命令来复制您的公钥:
1 |
|
确实解决了,但是重启iTerm后发现又不能push了,继续问
AI直接让我改终端配置文件,然并无卵用,倒是陷入坑中跟ChatGPT聊天浪费不少时间。
解决
最后直接转换话题,问ChatGPT如何在Mac中配置多个ssh秘钥,给出结论和我开始的操作一样,不一样的是新增了config文件,真相大白,原因即是配置配置多个秘钥让Git可以识别不同的。
具体的方法如下:
在 Mac 上配置多个 SSH 秘钥的步骤如下:
- 生成多个密钥对
在终端中执行以下命令生成多个密钥对:
1 |
|
其中 -f
参数指定了私钥和公钥的文件名,可以根据需要自定义。
- 添加私钥到 SSH Agent
执行以下命令将私钥添加到 SSH Agent:
1 |
|
- 配置 SSH 配置文件
在 ~/.ssh/
目录下创建 config
文件,并按照如下格式配置多个主机和对应的密钥:
1 |
|
其中 Host
是主机别名,HostName
是主机名或 IP 地址,User
是登录用户名,IdentityFile
是对应的私钥文件路径。
- 测试连接
执行以下命令测试连接:
1 |
|
如果连接成功,则表示配置成功。
这样就可以在 Mac 上使用多个 SSH 秘钥了。
经本人测试,重启终端后也可以正常使用。
后记
做完这一切后,我又找到那个只看了一半就关掉的如何配置多个秘钥的教程,发现后部分就是就是教你如何配置config的,真是被自己气死,看东西只看一半……