本文主要介绍了在同一台计算机上同时管理多个Git账号的场景下,如何去配置SSH Key。
使用背景
比如我们的个人电脑中需要使用多个代码平台的仓库地址, 例如云效, gitLab, gitHub, gitee等. 这就需要我们配置多个公钥, 每个公钥对应的Host不同
前提条件
通过SSH协议访问Codeup,需要满足如下条件:
-
本机已安装Git, 并保证版本大于 1.9(通过
git --version可获取本地的版本)。 -
本机需要安装OpenSSH客户端(GNU/Linux, macOS, 或 Windows 10已内置OpenSSH)。
-
SSH尽量保持最新,6.5之前的版本由于使用MD5签名,可能存在安全问题。
重要
如果您是Windows用户,在使用Git命令时,请使用WSL(需要Windows10或以上),或使用Git Bash。
配置SSH key
-
生成多个SSH Key:在Git Bash中执行以下命令以生成SSH Key。为了区分不同账号生成的SSH Key,请在Git Bash出现如下的第三行命令行时不要直接回车,而是填写自定义的密钥路径名称,以便后续使用,这里的名称会作为文件名称的一部分, 以此区分不同平台的公钥私钥. 然后进行回车确认。
ssh-keygen -t rsa -C "<您的邮箱>" Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa):<为了区分多个key,请填写自定义的名称> -
添加SSH密钥:登陆不同平台, 一般是右上角个人头像 > 个人设置 > SSH公钥。将步骤1中生成的*.pub的公钥粘贴到公钥输入框中进行保存。同理可配置步骤1中生成的多个公钥到相应的账号下。
-
编辑~/.ssh/config文件:
# 平台A
Host codeup
HostName codeup.aliyun.com
IdentityFile ~/.ssh/codeup
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes
# 平台A
Host github
HostName github.com
IdentityFile ~/.ssh/github
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes
# 平台A
Host gitee
HostName gitee.com
IdentityFile ~/.ssh/gitee
PreferredAuthentications publickey
IdentityAgent none
IdentitiesOnly yes
-
HostName:填写托管平台服务地址。
-
Host:填写别名,方便命令行使用。
-
IdentityFile:填写证书位置。
-
命令行操作
如何使用不同的Host拉取不同平台的代码:
# codeup
git clone git@codeup:xxxxxxx/xxx.git
# github
git clone git@github:xxxxxxx/xxx.git
# gitee
git clone git@gitee:xxxxxxxx/xxx.git