日常使用Git都是配置ssh密钥免密推送了,远程仓库使用最多的也是gitee.com和github.com,可能还会有公司内部搭建的服务器仓库,如果用一个ssh密钥,需要都添加同一个公钥到远程仓库,那就权限都是一样了,当使用多个远程仓库的时候不方便区别,停用其中某个远程仓库,需要配置远程仓库剔除公钥,这就要多个ssh密钥的场景了,停用其中某个远程仓库,只要把本机对应的密钥删除就好,不影响其它在用的远程仓库,要在使用的时候,再把备份的密钥复制回来就好。
阅读本文,需要有一定Git基础知识。
下文操作,都是基于 ~/.ssh 目录下。
1、生成默认ssh密钥id_rsa和id_rsa.pub
ssh-keygen -t rsa
2、生成其它ssh密钥other_rsa和other_rsa.pub
ssh-keygen -t rsa -f other_rsa
3、~/.ssh/config 文件配置,默认没有这个文件,需要创建这个文件
# ~/.ssh/config 文件内容
Host other.com
HostName git.other.com/IP
User other@qq.com
IdentityFile "~/.ssh/other_rsa"
- ~/.ssh 目录存在config文件,会优先被读取,否则就直接读取默认id_rsa密钥
- Host 是指定ssh别名,要与本地仓库的remote链接匹配,即xxx@other.com:xxx.git
- HostName 是远程仓库的地址或者IP地址
- User 是帐号,这个一般不配置,如果配置要跟 git config user.email 一致,否则push推送会有问题
- IdentityFile 对应的ssh私钥文件