SSH-GIT多账户最佳实践配置

  1. 为每个 GitHub 账户生成一对SSH 密钥,以及一个 Gitee 账户的 SSH 密钥

    1
    2
    3
    4
    # ed25519 / rsa
    ssh-keygen -t ed25519 -C "123456@qq.com" -f ~/.ssh/coder_itl_github
    ssh-keygen -t ed25519 -C "123456@gmail.com" -f ~/.ssh/itl_coder
    ssh-keygen -t ed25519 -C "123456@qq.com" -f ~/.ssh/coder_itl_gitee
  2. 将每个公钥添加到相应的 GitHub 或 Gitee 账户中。您可以通过以下方式复制公钥

    1
    2
    3
    clip < ~/.ssh/coder_itl_github.pub
    clip < ~/.ssh/itl_coder.pub
    clip < ~/.ssh/coder_itl_gitee.pub

    接下来,打开每个账户的网站,并将公钥添加到相应的账户设置中。

  3. 创建一个名为 config 的文件,并将其存储在 .ssh 文件夹中。该文件将包含每个账户的配置信息。以下是 config 文件的示例内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # ITL-Coder account
    Host github.com-itl-coder
    HostName github.com
    User git
    IdentityFile ~/.ssh/itl_coder

    # CoderITL account
    Host github.com-coderitl
    HostName github.com
    User git
    IdentityFile ~/.ssh/coder_itl_github

    # Gitee account
    Host gitee.com
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/coder_itl_gitee

  4. 配置用户名和密码

    1
    2
    git config  --global user.name "username"
    git config --global user.email "xx@qq.com"
  5. 测试是否配置正确

    1
    2
    3
    4
    5
    6
    # gmail
    ssh -T git@github.com-itl-coder
    # github
    ssh -T git@github.com-coderitl
    # gitee
    ssh -T git@gitee.com
    测试各个账号
  6. 如果您需要在同一会话中使用多个账户,则可以使用以下命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 添加 ITL-Coder 的密钥到 ssh-agent
    ssh-add ~/.ssh/itl_coder

    # 添加 CoderITL 的密钥到 ssh-agent
    ssh-add ~/.ssh/coder_itl_github

    # 添加 Gitee 的密钥到 ssh-agent
    ssh-add ~/.ssh/coder_itl_gitee

    • 如果ssh-add 出现错误,打开powershell 执行如下

      错误信息
      • PowerShell 终端执行

        1
        2
        3
        4
        5
        # 在 Windows 上,ssh-agent 是由 Git for Windows 包提供的,它可以为您管理 ssh 密钥。通过将其启动类型更改为手动,您可以控制何时启动 ssh-agent 服务,而不是在每次计算机启动时自动启动。

        # 使用 Set-Service 命令时,ssh-agent 是服务名称,-StartupType 是设置启动类型的参数,Manual 是新的启动类型值。将启动类型设置为 "Manual" 意味着服务将不会在每次计算机启动时自动启动,但仍然可以手动启动。

        Set-Service ssh-agent -StartupType Manual
      • 重复执行6

        出现如下为已解决错误
  7. 当在推送时需要,后续修改在网页中获取到的ssh 地址,因为在本地的config 文件中配置,需要使用这个本地配置的域名进行区分推送到那个账户上

    注意点: 只是第一次需要将ssh 地址的github.com 更换为config 中的Host