多个git账户ssh密钥配置

假设两git网站:A.com和B.com,在这两个网站上使用的邮箱和用户名分别为a@mail, userA和b@mail, userB。

  1. 清除全局配置
    git config --global --list
    git config --global --unset user.name
    git config --global --unset user.email

  2. 生成rsa密钥
    ssh-keygen -t rsa -C "a@mail"
    ssh-keygen -t rsa -C "b@mail"
    值得注意的是,上述每条命令按下 ENTER 键后,会有如下提示:
    Generating public/private rsa key pair.Enter file in which to save the key (/Users/xx/.ssh/id_rsa):
    在这里输入公钥的名字,默认情况是叫 id_rsa,为了不同git网站用户配置相区分,在这里分别输入 id_rsa_a,id_rsa_b起不同的名字。输入完毕后,一路回车,钥对就生成完毕了。

  3. 向git网站添加ssh keys

  4. 将私钥添加到本地
    迁移.ssh公私钥到另一台电脑上时记得执行该部分命令,否则采用ssh方式克隆github项目时报错:“sign_and_send_pubkey: signing failed for RSA from agent: agent refused operation from agent: agent refused operation for RSA ”
    打开git客户端,执行如下命令

eval `ssh-agent -s`
ssh-add C:/Users/xx/.ssh/id_rsa_a
ssh-add C:/Users/xx/.ssh/id_rsa_b
ssh-add -l

通过ssh-add命令,公钥对应的东西从一个邮箱字符串变为私钥文件(可能默认对应的私钥文件为id_rsa,由此公私钥不匹配,报出错误)

  1. 管理密钥
    在本地创建密钥配置文件,根据仓库的remote链接地址自动选择合适的私钥
    创建并编辑~/.ssh/config
Host A.com
HostName A.com
User userA
IdentityFile ~/.ssh/id_rsa_a

Host B.com
HostName B.com
User userB
IdentityFile ~/.ssh/id_rsa_b
  1. 测试
    执行git clone git@A.com:userA/xx即可下载A.com网站上xx仓库
  2. 一个注意点
    该文讨论的情形清除掉全局的git配置,所以对git仓库来说需要设置local的git配置才能正常地实现提交。
    git config --local user.name "userA"
    git config --local user.email "a@mail"

上述内容编写自Git 多用户配置
本文创建于2021年3月6日16点56分,修改于2021年 05月 05日 星期三 11:53:47 CST

posted @ 2021-03-06 16:56  园糯  阅读(388)  评论(0编辑  收藏  举报