PS:在日常开发中,单机多帐号使用较多,顾整理了关于单机多git帐号的访问详解案例,共享给大家。
单机多git帐号访问示例图
问题阐述-A与B账户访问管理
单机git环境中,当有多个git账户的时候,比如一个来自git.oschina.net的”A”,另一个来自github.com的”B”。下面讲解我如何在一个git环境中配置,让他们各自在oschina和github上通过添加各自生成的公钥即可完成各自访问。
问题解决-步骤
1.对账户A创建密钥
$ cd ~/.ssh; $ ssh-keygen -t rsa -C "a@mail.cn" #A账户注册邮箱 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/chenai/.ssh/id_rsa): a-mail #*重要*设置公私密钥唯一前缀 Enter passphrase (empty for no passphrase): #密码设置 Enter same passphrase again: #密码再次设置 Your identification has been saved in a-mail. #生成的私钥文件名 Your public key has been saved in a-mail.pub. #生成的公钥文件名
2.对账户B创建密钥
$ cd ~/.ssh; $ ssh-keygen -t rsa -C "b@mail.cn" #B账户注册邮箱 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/chenai/.ssh/id_rsa): b-mail #*重要*设置公私密钥唯一前缀 Enter passphrase (empty for no passphrase): #密码设置 Enter same passphrase again: #密码再次设置 Your identification has been saved in b-mail. #生成的私钥文件名 Your public key has been saved in b-mail.pub. #生成的公钥文件名
3.查看密钥文件列表
$ cd ~/.ssh;ll; -rw-r--r-- 1 Users Users Users 1679 二月 19 12:28 a-mail -rw-r--r-- 1 Users Users Users 402 二月 19 12:28 a-mail.pub -rw-r--r-- 1 Users Users Users 1675 二月 19 12:25 b-mail -rw-r--r-- 1 Users Users Users 407 二月 19 12:25 b-mail.pub
4.下面是非常重要的一步,增加config配置
vim ~/.ssh/config ###来自git.oschina.net的账户"A"设置 Host git.oschina.net HostName git.oschina.net PreferredAuthentications publickey #私钥路径设置 IdentityFile ~/.ssh/a-mail ###来自github.com的账户"B"设置 Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/b-mail
Host设置也是有技巧的,下例中会使用的。
5.测试
$ ssh -T git@git.oschina.net; Welcome to Git@OSC, 尘埃! $ ssh -T git@github.com; Welcome to Git@GITHUB, 尘埃!
Tip : 如果到这里你没有成功的话,别急,教你解决问题的终极办法–debug
比如测试github,ssh -vT git@github.com
-v 是输出编译信息,然后根据编译信息自己去解决问题吧。就我自己来说一般是config里的host那块写错了。
问题阐述-A与C账户访问管理
单机git环境中,当有多个git账户的时候,比如都来自git.oschina.net的账户”A”和”B”。我下面讲解如何在一个git环境中配置,让他们各自在oschina上通过添加各自生成的公钥即访问各自的项目。
问题解决-步骤
1.对账户A创建密钥
$ cd ~/.ssh; $ ssh-keygen -t rsa -C "a@mail.cn" #A账户注册邮箱 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/chenai/.ssh/id_rsa): a-mail #*重要*设置公私密钥唯一前缀 Enter passphrase (empty for no passphrase): #密码设置 Enter same passphrase again: #密码再次设置 Your identification has been saved in a-mail. #生成的私钥文件名 Your public key has been saved in a-mail.pub. #生成的公钥文件名
2.对账户B创建密钥
$ cd ~/.ssh; $ ssh-keygen -t rsa -C "c@mail.cn" #C账户注册邮箱 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/chenai/.ssh/id_rsa): c-mail #*重要*设置公私密钥唯一前缀 Enter passphrase (empty for no passphrase): #密码设置 Enter same passphrase again: #密码再次设置 Your identification has been saved in c-mail. #生成的私钥文件名 Your public key has been saved in c-mail.pub. #生成的公钥文件名
3.查看密钥文件列表
$ cd ~/.ssh;ll; -rw-r--r-- 1 Users Users Users 1679 二月 19 12:28 a-mail -rw-r--r-- 1 Users Users Users 402 二月 19 12:28 a-mail.pub -rw-r--r-- 1 Users Users Users 1675 二月 19 12:25 c-mail -rw-r--r-- 1 Users Users Users 407 二月 19 12:25 c-mail.pub
4.config配置和上例差距比较大,一定要认真仔细观察,Host设置技巧也体现出来
vim ~/.ssh/config ###来自git.oschina.net的账户"A"设置 Host git.oschina.net HostName git.oschina.net PreferredAuthentications publickey #私钥路径设置 IdentityFile ~/.ssh/a-mail ###来自git.oschina.net的账户"C"设置 Host c-oschina #*重要设置* HostName git.oschina.net PreferredAuthentications publickey #私钥路径设置 IdentityFile ~/.ssh/c-mail
C账户使用方法的两个特殊情况的详解
1.clone仓库时对应配置host对应的账户
git clone git@c-oschina:demo-c/c.git #并非原来的git@git.oschina.net:demo-c/c.git
2.本地已经创建或已经clone到本地
#方法1 - 打开.git/config文件 #更改[remote "origin"]项中的url中的 #c-oschina 对应上面配置的host [remote "origin"] url = git@c-oschina:demo-c/c.git #并非原来的git@git.oschina.net:demo-c/c.git #或者在Git Bash中提交的时候修改remote $ git remote rm origin; $ git remote add origin git@c-oschina:demo-c/c.git; #并非原来的git@git.oschina.net:demo-c/c.git
通过本例,host基本上应该和hostname一样,但是如果有多个hostname是一样的设置的情况下,host就应该采用“简称”来保持和HostName对应关系