多个 github 帐号的 SSH key 切换

发布于 2024-04-29 03:43:08 字数 2013 浏览 16 评论 0

今天给我女朋友弄了个 github 账号,由于准备全部在一台 mbp 上管理,当准备给新的 github 账号添加 ssh key 的时候提示我该 ssh key 已经使用过了,因为我之前已经把该 ssh key 添加到我的 github 账号上了。

原因

github 使用 SSH 与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至 github,每次连接时 SSH 客户端发送本地私钥(默认 ~/.ssh/id_rsa ​)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是多用户(first,second),我们在连接到 second 的帐号时,second 保存的是自己的公钥,但是 SSH 客户端依然发送默认私钥,即 first 的私钥,那么这个验证自然无法通过。不过,要实现多帐号下的 SSH key 切换在客户端做一些配置即可。

解决方案

首先,在新增私钥的时候,通过指定不同的文件名来生成不同的私钥文件

ssh-keygen -t rsa -f ~/.ssh/id_rsa_second -C "second@mail.com"

默认 SSH 只会读取 id_rsa ,所以为了让 SSH 识别新的私钥,需要将其添加到 SSH agent

ssh-add ~/.ssh/id_rsa_second

该命令如果报错: Could not open a connection to your authentication agent. 无法连接到 ssh agent ,可执行 ssh-agent bash 命令后再执行 ssh-add 命令。

完成以上步骤后在 ~/.ssh ​目录创建 config 文件,该文件用于配置私钥对应的服务器。内容如下:

# first.github (first@gmail.com)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

# second (second@gmail.com)
Host github-second
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_second

Host 随意即可,方便自己记忆,后续在添加 remote 是还需要用到。

配置完成后,在连接非默认帐号的 github 仓库时,远程库的地址要对应地做一些修改,比如现在添加 second 帐号下的一个仓库 origin,则需要这样添加:

git remote add origin git@github-second:second/test.git
# 并非原来的 git remote add origin git@github.com:second/test.git

这样每次连接都会使用 id_rsa_second 与服务器进行连接。至此,大功告成!

注意:github 根据配置文件的 user.email 来获取 github 帐号显示 author 信息,所以对于多帐号用户一定要记得将 user.email 改为相应的 email(second@mail.com)。

参考 github 帮助文档:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

苏辞

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

13886483628

文章 0 评论 0

流年已逝

文章 0 评论 0

℡寂寞咖啡

文章 0 评论 0

笑看君怀她人

文章 0 评论 0

wkeithbarry

文章 0 评论 0

素手挽清风

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文