Git使用两个用户名两个公钥链接同一个Git服务器

同篇文章以Gitee举例, 支持国产, 首先关联一下我的另外一篇文章:

在这篇文章中, 我后续有补充解释为什么会出现我之前没有弄明白的这个提示, 是因为时间间隔久远我用手机号和邮箱分别注册了一个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 [email protected]:jerryqi/nb.git

大喜, push成功了!

然而这也让我非常困惑, [[email protected]], 域名能够写成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中进行相同的修改即可.

完毕!

原文地址:https://www.cnblogs.com/jerryqi/p/11724849.html

时间: 2024-08-30 17:56:09

Git使用两个用户名两个公钥链接同一个Git服务器的相关文章

git恢复之前版本的两种方法reset、revert

方法一:git reset 原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本 适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法. 1. 查看版本号:可以使用命令“git log”查看: 2. 使用“git reset --hard 目标版本号”命令将版本回退: 再用“git log”查看版本信息,此时本地的HEAD已经指向之前的版本: 3. 使用“git push -f”提交更改:此时如果用“g

Git修改和配置用户名和邮箱

git在push/push to时需要使用到user.name和user.email,切记一定要现配置好查看user.name/user.email git config user.name git config user.email 查看所有配置信息git config --list配置user.name/user.email git config user.name "newName" git config user.email "newEmail" 加上--g

如何修改git全局初始化的用户名和邮箱? (git修改user.name 和user.email)

转自:https://blog.csdn.net/sjt19910311/article/details/83685616 今天刚刚入门了下git,,然后初始化的时候将用户名弄错了...就很气啊.然后网上找了半天都找不出一个可靠的修改全局用户名和邮箱的方法.. 最后还是自己摸索出来了..其实也很简单. 首先进入git bash 0: 输入$ git config --list 可以查看配置的一些东西.可以看到user.name 和user.email  分别是什么..如果你没有初始化过.那么直接

nginx把两个不同的网站挂到同一台服务器的80端口上

本文主要分享如果利用nginx把两个不同的网站挂到同一台服务器的80端口上 最终效果 例如:www.manyjar.com (web服务器是8080端口)和ishenghuo.manyjar.com (web服务器是2020端口)这两个网站的效果一样.   一.后台服务器部署 在同一台服务器上部署两台不同的tomcat服务器,端口分别是8080和2020.8080的服务器配置不需要修改,而2020端口的服务器配置修改如下: 1 修改其中一个tomcat的conf文件下的server.xml文件3

Git中如何利用生成SSH个人公钥访问git仓库

Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址来访问您的代码仓库,如下图: 2. 生成公钥 Mac/Linux 打开命令行终端, Windows 打开 Git Bash . 输入ssh-keygen -t rsa -C “[email protected]”,( 注册的邮箱),接下来点击enter键即可(也可以输入密码). $ssh-keyge

删除表中重复记录大于两条保存两条

--删除表中重复记录大于两条保存两条delete from t_Cht_clm_reg F where F.case_id in (select T.case_id from (select B.* from (select e.* , row_number() over (partition by e.notice_id order by e.case_id desc) rn from t_Cht_clm_reg e) B where B.notice_id in(select A.notic

idea中修改git提交代码的用户名

打开C盘里的 .gitconfig文件 修改当前项目的用户名和邮箱地址: git config user.name "username" git config user.email "email" 修改全局用户名和邮箱地址: git config --global user.name "username" git config --global user.email "email" 查看git用户名和邮箱地址命令: git c

删除git中缓存的用户名和密码

我们使用Git命令去clone Gitlab仓库的代码时,第一次弹框提示输入账号密码的时候输错了,然后后面就一直拒绝,不再重复提示输入账号密码,怎么破? git报错信息 运行一下命令缓存输入的用户名和密码: git config --global credential.helper wincred 清除掉缓存在git中的用户名和密码 git credential-manager uninstall 完美解决! 原文地址:https://www.cnblogs.com/mengtaoadmin/p

git修改邮箱和用户名(解决上传github绿点不出现问题)

一般绿点不出现是当初邮箱上传错了的缘故修改方法如下:打开git bash界面1: 输入$ git config --list 可以查看配置的一些东西.可以看到user.name 和user.email 分别是什么..如果你没有初始化过.那么直接:$ git config --global user.name "输入你的用户名"$ git config --global user.email "输入你的邮箱" 这样就可以初始化了. 2: 如果你已经初始化过了,但是不小