配置多个git远程仓库的ssh-Key切换

目前的git仓库如github都是经过使用SSH与客户端链接,若是只是固定使用单个git仓库的单个用户 (first),生成生成密钥对后,将公钥保存至github,每次链接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户状况下,链接的服务器上保存的公钥和发送的私钥天然是配对的。 可是在实际工做中,通常公司内部都有本身的独立的git仓库(gitlab.xxx.com),因而就会存在这样的情 况,在github有私人的帐号first,公司的gitlab中的工做帐号sencord,first和second由于环境不一样,必须配置不一样的username和email。因此必须对每一个帐号分别生成独立的公钥密钥对。在连接到github时,使用first的公钥密钥对,连接到公司内的gitlab时,使用second的公钥密钥对。假设first的密钥文件为id_rsa,second的密钥文件为id_rsa_second. 在默认状况下,ssh老是使用id_rsa密钥文件进行连接,这样对于second帐号的认证天然是不经过的, 不过,要实现多账号下的SSH key切换在客户端作一些配置便可。 首先cd到~/.ssh 使用 ssh-keygen -t -rsa -C ‘second@mail.com’(为你工做帐号的邮箱地址) 生成新的 SSH key:id_rsa_secondgit

ssh-keygen -t rsa -C 'second@mail.com' -f id_rsa_second

生成后将新的ssh public key添加到内部的gitlab仓库中, 而后在~/.ssh 目录下建立config文件,该文件用于配置私钥对应的服务器。内容以下:github

Host gitlab.xxx.com ##能够随意命名,连接时使用这个名字    
HostName gitlab.xxx.com    
User git    
Port 22    
IdentityFile ~/.ssh/id_rsa_second

执行服务器

git clone git@gitlab.xxx.com:second/test.git

时会使用second的id_rsa_second与服务器进行链接.而连接非gitlab.xxx.com服务器时则会使用first的密钥进行连接。至此,大功告成!ssh

注意:git根据配置文件的user.email来获取git账号显示author信息,因此对于多账号用户必定要 记得将user.email改成相应的email(second@mail.com)。gitlab

相关文章
相关标签/搜索