Git使用两个用户名两个公钥链接同一个Git服务器
同篇文章以Gitee举例, 支持国产, 首先关联一下我的另外一篇文章:
在码云上添加公钥时提示不允许重复添加(实际上当前公钥数为0)
在这篇文章中, 我后续有补充解释为什么会出现我之前没有弄明白的这个提示, 是因为时间间隔久远我用手机号和邮箱分别注册了一个gitee账户.
而我为了ssh方便, 自始至终保存了一套公钥私钥, 而她被用在了我之前注册的那个账号上, 于是在新的账号上提示不允许重复添加.
很容易理解, 她重复的作用域是整个gitee服务器.
要解决这个问题, 我势必要产生两套公钥私钥, 那么问题来了, 如何让他自动选择应该使用的那一套呢?
网上查了资料, 写一个ssh的config, 参考了这篇文章:
https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/
就是在.ssh文件夹下面新建一个config文件, 里面的格式大概这样:
Host server1
HostName server1.cyberciti.biz
User nixcraft
Port 4242
IdentityFile /nfs/shared/users/nixcraft/keys/server1/id_rsa
依葫芦画瓢搬过来目测不太好使, 因为他通篇介绍的是如何区别不同的服务器使用不同的密钥, 而没有介绍如何在同一个服务器使用不同的密钥.
然后我在GitHub上看到了另外一篇文章:
https://gist.github.com/jexchan/2351996
这个很符合我的胃口, 描述的是如何对同一个服务器使用两套密钥:
#account1
Host gitee.com-jerryqii
HostName gitee.com
User git
IdentityFile ~/.ssh/id_rsa #account2
Host gitee.com-jerryqi
HostName gitee.com
User git
IdentityFile ~/.ssh/id_rsa1
然后在你的仓库设置远程地址:
git remote set-url origin git@gitee.com-jerryqi:jerryqi/nb.git
大喜, push成功了!
然而这也让我非常困惑, [git@gitee.com-jerryqi], 域名能够写成gitee.com-jerryqi这种格式的? 还带一个用户名? git的协议到底是怎样的?
StackExchange给了我答案, 请参考这篇文章:
https://superuser.com/questions/366649/ssh-config-same-host-but-different-keys-and-usernames
总结下来就是, 上面我提到的gitee.com-jerryqi并不是一个域名, 而是host的一个别名.
当没有config文件存在的时候, host的别名就是域名, 这个很好理解.
而当有config文件存在的时候, 他会通过host去找HostName以及IdentityFile.
上述造成我误解的原因还是在于我使用了[域名]-[用户名]的关系, 实际上他可以是任何名字, 只需要在config中进行相同的修改即可.
完毕!
Git使用两个用户名两个公钥链接同一个Git服务器的更多相关文章
- 一个看起来不像中年人的中年人,带着两个初出茅庐的小伙子儿,用git管理项目代码的进击之路
一个中年人的孤独前行 我们这一代人,是上个世纪的人,活在当下,已然成为社会上的中流砥柱. 80年代生人,遥望我们的父辈,均是5.60年代的人,迟迟暮年,夕夕老矣.而我们,正当年,却又时光飞逝,很快便要 ...
- Git恢复之前版本的两种方法reset、revert(图文详解)(转)
一.问题描述在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset).反做(reve ...
- git cherry命令来比较两个分支的不同
git cherry 命令使用 1. 两个参数的情况 git cherry -v origin/master asa 比较本地的asa分支和远程master的差别 git cherry -v mast ...
- Git恢复之前版本的两种方法reset、revert
实战 回退 1.删除之前的提交 git reset --hard id 推送到远程 git push -f [git log中确实删除了,但是拿到可以恢复] 2.不删除之前的提交 git revert ...
- git代码回滚的两种选择
回滚到指定commit,且保持该commit之前和之后的提交记录 使用git revert命令. git revert HEAD // 回滚到前一次 commit git revert HEAD^ / ...
- Git修改和配置用户名和邮箱
git在push/push to时需要使用到user.name和user.email,切记一定要现配置好查看user.name/user.email git config user.name git ...
- Git中如何利用生成SSH个人公钥访问git仓库
Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...
- Git Windows客户端保存用户名与密码
1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件. 3. 用记事本打开_n ...
- git push跳过用户名和密码认证配置教程
在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构. 新 ...
随机推荐
- 51nod 1434
首先可以得出一个性质:LCM(1,2,3,4,...,N-1,N) 中质因子k的出现的次数为t,则有k^t<=n 根据这个性质我们先筛出素数,然后枚举每个质数,求出对应的k和t,然后找出倍数j( ...
- P4556 雨天的尾巴 线段树合并
使用线段树合并,每个节点维护一棵权值线段树,下标为救济粮种类,区间维护数量最多的救济粮编号(下标).所以每个节点答案即为\(tre[rot[x]]\). 然后运用树上点的差分思想,对于分发路径\(u, ...
- 【原创】go语言学习(十二)struct介绍1
目录: struct声明和定义 struct的内存布局以及构造函数 匿名字段和struct嵌套 struct与tag应用 struct声明和定义 1.Go中面向对象是通过struct来实现的, str ...
- P2597 [ZJOI2012]灾难——拓扑,倍增,LCA
最近想学支配树,但是基础还是要打好了的: P2597 [ZJOI2012]灾难 这道题是根据食物链链接出一个有向图的关系,求一个物种的灭绝会连带几种物种的灭绝: 求得就是一个点能支配几个点: 如果一个 ...
- 30行左右代码实现一个类似httprunner的接口框架
框架的最终归宿往往是领域语言+模板解析. 首先先约定一种所要执行操作的表述格式.然后通过模板解析将描述语言转化为代码进行执行.例如,我们可以使用以下yaml文件描述多个步骤并且需要关联的接口: api ...
- JavaScript中,返回上一个页面时,如何保证上一个页面的不刷新?
history.back()和history.go(-1)都可以实现返回上一页并不刷新.History 对象包含用户(在浏览器窗口中)访问过的 URL. history.back() 等同于在浏览器点 ...
- 3.linux 别名 查找 压缩与解压缩
1.别名 alias 别名=‘定义命令内容’ alias grep=‘grep --color’ vim ~/.bashrc 关掉终端再开一次!!!!才能生效 ...
- php手记之01-tp5框架安装
1.1.介绍 在web领域,PHP是所有编程语言中比较受欢迎的一门语言! PHP已经诞生出几十种编程框架!但国内最热门和使用率最好的框架有Thinkphp和Laravel这两款PHP框架! 1.2.为 ...
- arcgis 地理坐标系 699个,投影坐标系是4767
import arcpy # Get the list of spatial references and print it. srs = arcpy.ListSpatialReferences(sp ...
- What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
What are the benefits to using anonymous functions instead of named functions for callbacks and par ...