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

本文主要介绍了在同一台计算机上同时管理多个云效账号的场景下,如何去配置SSH Key。

使用背景

SSH Key是用于克隆代码的授权标识,具有全平台唯一性,代表着一个特定的账号。每个云效账号所配置的SSH Key必须不同,以便有效地标识用户并对应相应的操作权限及审计追踪。在某些情况下,如果您需要在同一台计算机上同时管理多个云效账号,可以通过以下方式配置SSH Key。

前提条件

通过SSH协议访问Codeup,需要满足如下条件:

  • 本机已安装Git(安装教程参见安装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. 1生成多个SSH Key:在Git Bash中执行以下命令以生成SSH Key。为了区分不同账号生成的SSH Key,请在Git Bash出现如下的第三行命令行时不要直接回车,而是填写自定义的密钥路径名称,以便后续使用,例如~/.ssh/codeup_1 或 ~/.ssh/codeup_2,然后进行回车确认。

    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密钥:登录云效账号A,选择Codeup页面右上角个人头像 > 个人设置 > SSH公钥。将步骤1中生成的*.pub的公钥粘贴到公钥输入框中进行保存。同理可配置步骤1中生成的账号B公钥到相应的账号下。

  3. 编辑~/.ssh/config文件:

    # 账号A
    Host codeup_1
    HostName codeup.aliyun.com
    IdentityFile ~/.ssh/codeup_1
    PreferredAuthentications publickey
    IdentityAgent none
    IdentitiesOnly yes
    
    # 账号B
    Host codeup_2
    HostName codeup.aliyun.com
    IdentityFile ~/.ssh/codeup_2
    PreferredAuthentications publickey
    IdentityAgent none
    IdentitiesOnly yes
    • HostName:填写托管平台服务地址。

    • Host:填写别名,方便命令行使用。

    • IdentityFile:填写证书位置。

  4. 命令行操作

    命令行切换账号:在日常进行代码推送和拉取的工作中,获取代码库的SSH克隆地址后,本地可能存在多个账号,用户可以使用命令行切换账号。以示例库举例,假设克隆地址为:gi*@codeup.aliyun.com:me/Codeup-Demo.git。那么可以使用如下命令切换账号:

    git@codeup_1:me/Codeup-Demo.git
    git@codeup_2:me/Codeup-Demo.git

    同时也可以使用以下命令查看当前使用的密钥对应的账号:

     ssh -t git@codeup_1

    正常将看到如下返回结果:

    1

更多说明

更多SSH配置说明,请参见ssh config 文档