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

相关推荐
AD钙奶-lalala5 分钟前
SpringBoot 4.0.3配置Swagger
java·spring boot·后端
研究点啥好呢6 分钟前
3月10日GitHub热门项目推荐|自动化的浪潮
运维·人工智能·ai·自动化·github
IT_陈寒15 分钟前
JavaScript开发者必知的5个性能杀手,你踩了几个坑?
前端·人工智能·后端
跟着珅聪学java19 分钟前
Electron 精美菜单设计
运维·前端·数据库
日光倾19 分钟前
【Vue.js 入门笔记】闭包和对象引用
前端·vue.js·笔记
一只程序熊26 分钟前
UniappX 未找到 “video“ 组件,已自动当做 “view“ 组件处理。请确保代码正确,或重新生成自定义基座后再试。
前端
林小帅27 分钟前
【笔记】xxx 技术分享文档模板
前端
雾岛心情33 分钟前
【HTML&CSS】HTML为文字添加格式和内容
前端·css·html
心.c41 分钟前
如何在项目中减少 XSS 攻击
前端·xss
Rsun045511 小时前
Vue相关面试题
前端·javascript·vue.js