如何在Git中使用不同的SSH密钥
介绍如何解拥有多个不同账户的情况下使用ssh密钥使用Git
简介
通常情况下一般我们只是用单一的ssh密钥进行Git仓库的代码推送,但是某些i情况下会使用多个账户进行多个项目的开发,这个时候就需要配置正确的SSH密钥,否则将无权限进行推送等。
创建一个新的密钥
通过命令行工具可以轻松生成一个新的 SSH 密钥, 将下方邮箱替换为自己的
1 | ssh-keygen -t ed25519 -C "your_email@example.com" |
输入命令后,会询问你想将文件存储在哪里, 他会有一个默认值,不同的系统路径不一样,如果没有其他要求直接回车,或者可以自己输入路径和名称然后进行回车
1 | Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM): |
接下来会重复让你输入密码,密码是用来保护SSH密钥的,一般不需要直接回车即可。
1 | > Enter passphrase (empty for no passphrase): |
将SSH密钥添加到GitHub
这里GitHub提供了一个详细文档。
修改 SSH
下面基于Linux演示,Windows用户可以使用 WSL
1 | # use vim |
打开文件后一般是空的,现在我们添加配置文件
1 | Host * |
上面我们添加了两个配置,第一个id_ed25519作为默认,会应用于每一个GitHub仓库。接下来展示如何使用第二个配置。
使用第二个配置
首先我们克隆一个仓库, 一般使用如下格式命令进行克隆
1 | git clone git@github.com:user/repo.git |
但是这里我们使用修改过的命令进行克隆
1 | git clone git@github.com-forWork:user/repo.git |
这里将github.com 修改成为 github.com-forWork, 这里的 github.com-forWork 是上面 config 里面定义的,根据自己的定义修改这个命令
修改项目配置
如果直接推送,使用的还是默认SSH密钥,所以这里还需要修改一下当前项目远程地址
直接使用命令进行修改
1 | git remote set-url origin git@github.com-forWork:user/repo.git |
就是将这里的推送地址修改为我们在config中定义的。
另外一种是使用编辑器修改项目的配置
1 | git config --global core.editor "code --wait" |
使用这条命令可以将Git使用的编辑器修改为 vscode 当然这条命令是可选的
1 | git config -e |
这里会调用编辑器打开配置文件,将配置文件中的
1 | [remote "origin"] |
之后就可以正常的进行推送了