单机多git帐号的访问详解案例

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对应关系

相关文章
  1. 对Web静态资源缓存自动更新的思考与实践的总结
  2. CentOS 6.5安装部署SVN 1.8.13
  3. php-redis扩展
  4. Redis安装部署
  5. gearman应用-分布式图库系统设计
  6. SVN trunk, branches and tags
本站版权
1、本站所有主题由该文章作者发表,该文章作者与尘埃享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和尘埃的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:
二维码
Posted in Cache/File存储, Git
Comments are closed.