如何在同一台电脑上使用多个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.com 和 Host yonghuming.github.com:

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

  • AddKeysToAgent yes:

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

  • UseKeychain yes

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

  • IdentityFile ~/.ssh/id_ed25519 和 IdentityFile ~/.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。这样,你就可以方便地管理多个账号或身份了。

相关推荐
苏三说技术19 分钟前
为什么越来越多人用Arthas 4 ?
后端
ServBay29 分钟前
AI 开发平台出事后,API Key 泄露要怎么办
后端·aigc·ai编程
程序员老申38 分钟前
解剖 PDF 底层二进制:一行代码如何抓出假薪资流水的 3 处破绽
后端
WANGXIN56742 分钟前
攻克微信读书 Web 端「漏抓 40% 内容」顽疾:我开源了一个全书无损导出精排 PDF / EPUB / Markdown 工具
github
LuHang1 小时前
从天地图切换到高德地图:一次真实的底图迁移实战
前端·vue.js·cesium
用户360055579001 小时前
Kestrel_VLLM - 27 · 寄存器常驻与融合发射:两次「少发一次」
前端
前端小万1 小时前
用"道法术器"重构你和 AI 的协作方式
前端·人工智能·程序员
JuiceFS1 小时前
从 Meta 的工程实践看 EB 级 AI 存储架构
人工智能·后端
dong_junshuai1 小时前
每天一个开源项目#131 nvm:切换 Node 的关键在当前 Shell
github
鶴哥只手遮天1 小时前
Angular 22 源码级深度解析-第 06 章 模板指令全解:`ɵɵelementStart`、`ɵɵproperty`、`ɵɵadvance` 与绑定指令
前端·开源·angular.js