Git配置多个SSH-Key

可同git平台多账号,或者多平台不同账号(如github,gitee)

新建user1、user2的SSH Key

  1. 生成user1的SSH Key

    $ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  
    

    注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。

    按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key

    $ cat ~/.ssh/id_rsa.pub
    $ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
    

    解析:

    • 这里的~即是当前操作系统家目录,windows下就是C:\Users\{你的用户名}\.ssh
    • ssh-rsa 就是生成的id_rsa.pub里的公钥,也可以自行打开文件查看内容
  2. 生成user2的SSH key

    $ ssh-keygen -t rsa -C "xxxxx@xxxxx.com" -f ~/.ssh/github_id_rsa
    

    注意:这里后面配置生成的文件名,当然第一个ssh也可以自行配置

具体演示过程如下图:

密钥添加到SSH agent中

因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:

ssh-add ~/.ssh/{对应文件,不带.pub}

如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa_user2

修改config文件

在~/.ssh目录下找到config文件,如果没有就创建,然后修改config,配置如下:

如果存在的话,其实就是往这个config中添加一个Host:

建一个github别名,新建的帐号使用这个别名做克隆和更新

其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。

这里将GitHub SSH仓库地址中的git@gitee.com替换成新建的Host别名如:gitee_self作为个人使用,

那么原地址 是:git@gitee.com:组织名/demo.git,替换后应该是:git@gitee_self:组织名/demo.git.

git的config配置:

本地仓库下.git下config配置

git平台添加SSH key

打开新生成的~/.ssh/???.pub文件,将里面的内容添加到Gitee后台。

第一个gitee帐号下的SSH Key中也要记得添加。

测试

$ ssh -T git@gitee.com

Hi 账号名! You've successfully authenticated, but GITEE.COM does not provide shell access.

 $ ssh -T git@gitee_self

Hi 账号名(对应存放公钥账号的)!You've successfully authenticated, but GITEE.COM does not provide shell access.

应用

测试成功,尝试push账号下的远程仓库。如下:

  1. add
  2. commit
  3. push

注意:如果提示权限不够要检查本地仓库是否有更改url改为别名,否则可能用的另一个账号提交的会报错。

posted @ 2020-12-16 13:50  Ivanse  阅读(95)  评论(0)    收藏  举报