如何在同一台电脑上使用多个git账号的ssh key?

前言

我们在克隆一个项目的时候,既可以通过https,也可以使用ssh,同时走ssh协议的话很多时候能帮我们解决国内的网络导致clone不下来的问题。

但是,如果你有多个账号或者多个身份需要管理,那么如何在同一台电脑上使用多个 SSH Key 呢?本文将为你详细介绍操作步骤。

实际操作

注意,下面的操作建立在你已经有了一个ssh-key了的情况下。如果你还没有的话,建议按照Github的文档进行操作。

一般情况下,如果我们是按照默认配置去新建ssh key的话,.ssh文件夹下应该是这样的结构

mac用户可以直接在控制台输入open ~/.ssh查看

windows用户可以直接去到 C盘 -> 用户 -> 你的用户名 -> .ssh文件夹里查看

如果你也是这样,并且想要再添加一个ssh key,那么请跟着该文往下走

1. 多弄出一个 Key

首先,我们需要生成一个新的 SSH Key。使用以下命令可以生成一个 ed25519 类型的 SSH Key,要替换掉双引号内邮箱地址为你的邮箱

要注意的是,回车之后它会问你是否要输入一个文件名,这步建议手动输入一个有意义的文件名 ,我自己是用得github用户名,比如 id_ed25519_yonghuming

Shell 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"

2. 添加到 SSH Agent

生成新的 SSH Key 后,需要将其添加到 SSH Agent。如果你使用的是默认路径的话,可以使用以下命令添加:

Mac:

bash 复制代码
ssh-add ~/.ssh/id_ed25519_yonghuming

Windows:

Shell 复制代码
ssh-add C:\Users\你的用户名\.ssh\id_ed25519_yonghuming

如果出现以下提示,表示添加成功:

less 复制代码
Identity added: /Users/.../.ssh/id_ed25519_yonghuming (your_email@example.com)

3. 修改 SSH 配置文件

接下来,我们需要修改 SSH 配置文件 config。如果没有这个文件,可以新建一个。打开 Terminal,输入以下命令打开 SSH 文件夹:

Mac:

bash 复制代码
open ~/.ssh/

Windows:

Shell 复制代码
  直接进入C盘->用户->你的用户名->.ssh文件夹

找到并双击打开 config 文件,添加以下内容,注意要将 yonghuming 也改为你之前设置的id_ed25519_yonghuming文件的用户名:

Plain 复制代码
Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

# 下面为新增内容
Host yonghuming.github.com
  Hostname github.com
  User yonghuming
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519_yonghuming

这样就完成了配置!

4. 使用起来

假设你之前的命令如下

bash 复制代码
git clone git@github.com:user/repo.git

现在,你就可以根据项目自由切换ssh了,比如你想要使用新添加的yonghuming的ssh key,只要改改url就行

bash 复制代码
git clone git@yonghuming.github.com:user/repo.git

5. 解释

你可能会好奇上面的配置是什么意思。

  • Host github.comHost yonghuming.github.com

    这两行定义了不同主机的别名。当你使用 SSH 连接到 github.com 时,系统会根据这里的配置来选择使用哪个 SSH Key。

  • AddKeysToAgent yes

    这个选项告诉 SSH 在连接时将私钥添加到 SSH Agent 中。这样你就不需要每次连接都输入密码或者解锁私钥。

  • UseKeychain yes

    这个选项告诉 SSH 在 macOS 上使用系统钥匙串来存储私钥,这样可以方便地管理私钥。

  • IdentityFile ~/.ssh/id_ed25519IdentityFile ~/.ssh/id_ed25519_yonghuming

    这两行指定了不同主机对应的私钥文件路径。你需要根据实际情况将 ~/.ssh/id_ed25519~/.ssh/id_ed25519_yonghuming 替换为你生成的实际私钥文件路径。

综合起来,这段配置的作用是告诉 SSH 当连接到 github.com 时使用 id_ed25519 私钥,连接到 yonghuming.github.com 时使用 id_ed25519_yonghuming 私钥。这样就可以方便地管理多个不同的 SSH Key 了。

总结

通过以上步骤,我们成功实现了在同一台电脑上使用多个 SSH Key 的目的。记得在配置文件中为不同的身份设置不同的 Host 和 IdentityFile。这样,你就可以方便地管理多个账号或身份了。

相关推荐
To_OC13 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
Mintimate13 小时前
从 Git 贡献记录到人设画像报告:AI Stats Agent 的一次全栈实践
github·边缘计算·agent
vipbic13 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy13 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志14 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
华科大胡子15 小时前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
github
invicinble15 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯16 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
戮漠summer16 小时前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
名字还没想好☜16 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js