多个 github 帐号的 SSH key 切换
今天给我女朋友弄了个 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 技术交流群。
上一篇: Android 生成唯一标识符 UUID
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论