如何在同一台电脑上配置多个SSH Key

166 阅读2分钟

本文主要介绍了在同一台计算机上同时管理多个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

  1. 生成多个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,请填写自定义的名称>
    
  2. 添加SSH密钥:登陆不同平台, 一般是右上角个人头像 > 个人设置 > SSH公钥。将步骤1中生成的*.pub的公钥粘贴到公钥输入框中进行保存。同理可配置步骤1中生成的多个公钥到相应的账号下。

  3. 编辑~/.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:填写证书位置。

  1. 命令行操作

    如何使用不同的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