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

相关推荐
码农派大星。21 分钟前
Spring Boot 配置文件
java·spring boot·后端
GIS程序媛—椰子43 分钟前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
DogEgg_0011 小时前
前端八股文(一)HTML 持续更新中。。。
前端·html
ZL不懂前端1 小时前
Content Security Policy (CSP)
前端·javascript·面试
木舟10091 小时前
ffmpeg重复回听音频流,时长叠加问题
前端
杜杜的man1 小时前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*1 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
llllinuuu1 小时前
Go语言结构体、方法与接口
开发语言·后端·golang
cookies_s_s1 小时前
Golang--协程和管道
开发语言·后端·golang
王大锤43911 小时前
golang通用后台管理系统07(后台与若依前端对接)
开发语言·前端·golang