作者:白狼 出处:http://www.manks.top/git-multiply-accounts.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

什么意思呢?想问的人自然知道,不懂的人说了他也是不知道滴。

同一服务器,同一托管平台,多个账号问题

1、添加key

我们暂且以oschina为例。为了更好的说明问题,我们在oschina平台分别用账号111新建项目test111和账号222新建项目test222,记得项目私有化哦,不然我们也没啥说的了。

在我们想要把项目test111 clone下来之前,需要先按照下面的步骤设置关联的key

ssh-keygen -t rsa -C "111@163.com" // 邮箱是账号111对应的邮箱

整个过程就回车完事,操作起来那是相当的简单!但是还没完,可能你注意到了,回车的过程中,有一句话是这样提示的:

Your public key has been saved in /root/.ssh/id_rsa.pub.

没错,我们现在打开这个文件

cat /root/.ssh/id_rsa.pub

拷贝文件里面的内容, 然后打开 http://git.oschina.net/keys 这个页面,新建key,把复制的内容粘贴进来就好了。

这样一来,我们就把服务器上面的key跟oschina平台进行了关联。

2、clone项目

接着我们通过git clone命令把test111项目clone下来,记得clone的地址是ssh而不是https哦,这个时候会提示我们输入用户名和密码,其分别是oschina的账号和密码。

如果你手贱是以https的方式进行clone的,可以通过下面的命令重新设置远程仓库地址(没有则可跳过此步骤)

// 移除之前的远程仓库地址
git remote remove origin
// 新增远程仓库地址为ssh,非https
git remote add origin git@git.oschina.net:wwolf/test111.git

3、多账号兼容问题

到这里,对于test111项目pull push操作基本上都是没有问题的了。如果说用户222想在这台服务器上面对项目test222进行管理,我们直接执行git clone git@git.oschina.net:222/test222.git之后,报错了,提示如下:

Access denied.
fatal: Could not read from remote repository. Please make sure you have the correct access rights
and the repository exists.

为什么呢?首先最重要的问题肯定是key的问题了!因为我们之前并未层在这台服务器增加key关联到用户222的oschina账号!那我们就按照步骤1重新在服务器上为用户222添加一个key吧,不过需要注意的是,我们的key保存的文件要重命名了,不然可就把用户111创建的key覆盖了!

ssh-keygen -t rsa -C "账号222的邮箱@qq.com"
//接下来会提示我们想要把key保存在哪个文件,重新输入文件名即可
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_2
//接着回车回车回车完事,重要的话说三遍!

然后我们登录账号222的oschina账号添加key

但是问题出现了,这个时候我们重新clone test222依旧提示我们没权限,怎么回事???本篇文章的中心主题曝光了!废话了一堆,开始说重点--------------------------

其实这个时候我们clone test222项目时,git是拿默认的id_rsa.pub文件里面的key去对比的,这肯定是有问题的嘛,因为222账号并没有添加这个key!那也就是说我们这里如果clone test222的时候让git拿着id_rsa_2.pub文件里面的key去验证不就完事了么?是的,就是这样!我们看实现步骤:

首先我们让git识别我们新增的key

ssh-agent bash
ssh-add ~/.ssh/id_rsa_2

接着我们在~/.ssh/ 目录下新建或者修改config文件

#Host 是你远程仓库的地址,注意哦,如果有些服务器做的ip端口转发,这里不要带上端口号
Host git.oschina.net
#HostName 是远程仓库的地址,同样如果做的端口转发也不应带端口号
HostName git.oschina.net
#Port 端口号,如果有做转发需要在这里填写端口号,没有就不必要填
#Port
#用户
User
#识别key的文件
IdentityFile ~/.ssh/id_rsa #都指向同一个平台的话,下面的Host需要做个处理,因为我们在用这个key的时候根据Host从上到下进行查找,不做修改肯定会先查找到第一个key,依旧无效,随便改就好了,其他参数不做特殊处理
Host git222.oschina.net
HostName git.oschina.net
#Port
User
IdentityFile ~/.ssh/id_rsa_2

可以看到,我们对222用户的Host做了处理,那么我们就需要修改下222的远程仓库地址了

// 原仓库地址
git@git.oschina.net:/test222.git
// 修改为
git@git222.oschina.net:/test222.git

也就是说这个时候用户222只需要执行命令

git clone git@git222.oschina.net:/test222.git

就可以了!就可以了!!!

cd test222/
//发现git pull git push也都没有任何问题

同一服务器,不同托管平台,多个账号问题

这多个平台的问题基本上就简单了,为了举例说明,我们用gitlab平台的333账号的项目test333进行测试,注意哦,我们是注册第三个账号在上面两个账号的基础之上进行的测试

git clone git@gitlab.com:/test333.git
// 可想而知,同样是没权

因为没那么多邮箱,我们注册gitlab依旧使用的是用户222的邮箱,不过这对我们的操作没任何影响,无非就是多创建一个id_rsa_3文件而已,鉴于此,我们直接拷贝id_rsa_2.pub里面的key到gitlab平台。

然后在~/.ssh/config文件内添加gitlab平台的配置即可

Host gitlab.com
HostName gitlab.com
#Port
User //因为gitlab的邮箱跟用户222一致,这里用这个key,如果不一致,你仍然需要生成新的key,这里引用新的key文件
IdentityFile ~/.ssh/id_rsa_2

回过头来看看,git多账号的问题不难操作嘛,完美解决!查看原文

git多账号登录问题的更多相关文章

  1. Windows下Git多账号配置,同一电脑多个ssh-key的管理

    这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有一些提到一些基础的操作. <Git-Tort ...

  2. SourceTree 03 - 跳过账号登录直接进入主界面

    SourceTree系列第1篇 SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/geaosu/p/8807666.html) SourceTree系列 ...

  3. Windows下配置Git多账号github码云

    Windows下配置Git多账号github码云 1.配置了全局用户名和邮箱 $ git config --global user.email "你的邮箱" $ git confi ...

  4. 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理

    Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接 ...

  5. windows7配置git 免密码登录git服务器

    1.在桌面右击“Git Bash Here ” 2.输入:cd ~/.ssh/ 3.输入你的git服务器的用户 git config --global user.name "xx" ...

  6. Windows下Git多账号ssh-key(复制自己用)

    Windows下Git多账号配置,同一电脑多个ssh-key的管理 这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接往下 ...

  7. SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录SP站点

    通过组策略实现IE自动以当前域账号登录SP站点 1. 在运行中运行MMC,启动"组策略对象编辑器". 如下图: 找到组策略如下图: 找到域 点右键编辑 找到如下图: 找到[计算机配 ...

  8. 通过组策略实现Firefox自动以当前域账号登录MOSS站点---(原创)

    忘忧草原创,转发请保留本人的大名,谢谢,如果需要文档的请找我索取 前言 通过组策略实现基于AD的windows验证的sharepoint站点在火狐下自动以当前域账号登录. 操作步骤-在服务器添加策略工 ...

  9. spring security 管理会话 多个用户不可以使用同一个账号登录系统

    多个用户不能使用同一个账号同时登陆系统. 1. 添加监听器 在web.xml中添加一个监听器,这个监听器会在session创建和销毁的时候通知Spring Security. <listener ...

随机推荐

  1. 自定义基于 VLC 的视频播放器

    前言(蛋疼的背景故事) 前段时间,接了一个小项目,有个需求是要在系统待机一段时间以后,循环播放 MV(类似于 Windows 系统的屏幕保护). 听到这个需求,我首先想到的是 MediaPlayer ...

  2. 恋爱虽易,相处不易:当EntityFramework爱上AutoMapper

    剧情开始 为何相爱? 相处的问题? 女人的伟大? 剧情收尾? 有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易 ...

  3. Unity游戏内版本更新

    最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...

  4. JavaScript权威指南 - 对象

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 任务调度系统界面 http: ...

  6. 【Linux大系】Linux的概念与体系

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...

  7. 使用Microsoft的IoC框架:Unity来对.NET应用进行解耦

    1.IoC/DI简介 IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详 ...

  8. WINDOWS系统下MYSQL安装过程中的注意事项

    1.首先MySQL的安装方式有两种:一种是MSI安装方式,很简单就像安装Windows软件一样.另外一种就是ZIP安装方式.这种相对而言比较麻烦.新手推荐MSI安装方式. 安装方式有以下两种: MSI ...

  9. Nodejs之MEAN栈开发(七)---- 用Angular创建单页应用(下)

    上一节我们走通了基本的SPA基础结构,这一节会更彻底的将后端的视图.路由.控制器全部移到前端.篇幅比较长,主要分页面改造.使用AngularUI两大部分以及一些优化路由.使用Angular的其他指令的 ...

  10. android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)

    第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\Dig ...