前言
我们在克隆一个项目的时候,既可以通过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。这样,你就可以方便地管理多个账号或身份了。