如何在同一台电脑上使用多个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。这样,你就可以方便地管理多个账号或身份了。

相关推荐
To_OC10 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
前端兰博11 小时前
05-Redis
redis·后端
databook11 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
【JAVA】玩家11 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
excel11 小时前
研究 Vue 3 源码的收获
前端·vue.js
东风破_12 小时前
从 Neo4j 到 GraphRAG:用 Text-to-Cypher 构建图检索 RAG
人工智能·后端
可乐鸡翅yeah_13 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx14 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师14 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
llqbzllll14 小时前
Spring AI 工具调用不是反射一下就结束:用 2.0.1 跑通失败恢复与调用上限
人工智能·后端