当一台电脑需要连接多个远程仓库的时候如何配置。如一个仓库需要连接github、另一个仓库需要谅解gitlab、还有一个仓库需要连接gitee等。

同一电脑配置多个仓库,如果仓库不为同一网站则使用同一个公钥即可。本文讲的是分开配置的方法

1.配置一个远程仓库

(1)生成ssh-key

输入如下代码生成一个ssh-key

ssh-keygen -t rsa -C "yourmail@gmail.com"

一般情况下连续三个回车直接生成ssh-key出现如下方代码

Generating public/private ecdsa key pair.

Enter file in which to save the key (/home/username/.ssh/id_ecdsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/username/.ssh/id_ecdsa.

Your public key has been saved in /home/username/.ssh/id_ecdsa.pub.

The key fingerprint is:

dd:15:ee:24:20:14:11:01:b8:72:a2:0f:99:4c:79:7f username@localhost-2011-12-22

The key's randomart image is:

+--[ECDSA 521]---+

| ..oB=. . |

| . . . . . |

| . . . + |

| oo.o . . = |

|o+.+. S . . . |

|=. . E |

| o . |

| . |

| |

+-----------------+

第一个回车后会出现

Generating public/private rsa key pair.Enter file in which to save the key (/c/Users/Administrator.2017.V.2.12-318/.ssh/id_rsa):

要求输入想要存储的文件名的位置和名称 ( 如果不输入则名称默认为~/.ssh/id_rsa、如果你仅仅要配置一个帐号,那么我们使用默认名称即可)

第二个回车后出现:输入私钥的密码

Enter passphrase (empty for no passphrase):

第三个回车后:为确认输入私钥的密码

Enter same passphrase again:

这里直接回车默认设置为无密码,使用默认即可

到这里生成SSH-KEY的事就完成了,你在当前文件夹会看到两个文件:

id_rsa你的私钥); id_rsa.pub(你的公钥)

(2) 查看的公钥文件的实际内容,添加到对应的 远程仓库账户中

cat ~/.ssh/id_rsa.pub

参数解释

也可以通过如下代码来生成ssh-key

ssh-keygen -t rsa -f ~/.ssh/id_rsa_x -C "yourmail@xxx.com"

-f 后面内容为指定的ssh-key生成的位置和名称

-t 参数之后,我们请求建立一个 “RSA” 类型的密钥。RSA 是当前最新并且最安全的一种形式。

-C 参数之后,我们提供了一个注释,你可以把它想象为对这个密钥的一种描述或标签。例如使用你的 email 地址。总之,一个能让你之后更容易识别的注释。

2. 配置多个远程仓库

生成三个ssh-key

生成三个名称不同ssh-key

分别命名为id_rsa_github;id_rsa_github2;id_rsa_github;id_rsa_gitee

# 可以采用如下方式 在第一个回车后输入名称

ssh-keygen -t rsa -C "yourmail@gmail.com

Generating public/private rsa key pair.

Enter file in which to save the key (/Users/QuQu/.ssh/id_rsa): id_rsa_gitlab

编辑config文件,配置不同的仓库指向不同的密钥文件

如果没有则在~/.ssh文件夹下新建 config文件

windows 在Window进入C:/Users/你的用户名/.ssh文件夹,右键新建一个文本文件,改名为config即可。这里要注意,没有.ssh文件夹的要新建一个.ssh名的文件夹。

Linux进入.ssh文件夹:cd ~/.ssh,新建config文件:touch config;或者:touch ~/.ssh/config。这里要注意,没有.ssh文件夹的要新建一个.ssh名的文件夹。

添加如下内容

# github配置

Host github.com(可更改)// 主机名字,不能重名

HostName github.com// 主机所在域名或IP

User git// 用户名称

PreferredAuthentications publickey

IdentityFile ~/.ssh/id_rsa_github// 私钥路径

# github配置(第二个与第一个不是一个仓库但是同为github)

Host github2.com(可更改)// 主机名字,不能重名

HostName github.com// 主机所在域名或IP

User git// 用户名称

PreferredAuthentications publickey

IdentityFile ~/.ssh/id_rsa_github2// 私钥路径

# gitlab配置

Host gitlib.com(可更改)

HostName gitlab.xxx.com(gitlab仓库域名)

User git

PreferredAuthentications publickey

IdentityFile ~/.ssh/id_rsa_github

# gitee配置

Host gitee.com(可更改)

HostName gitee.com

User git

PreferredAuthentications publickey

IdentityFile ~/.ssh/id_rsa_github

清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中

这里如果你用的github官方的bash,ssh-agent -s,如果是其他的,比如msysgit,eval $(ssh-agent -s)

# 如果在.ssh目录下可省略文件路径 :ssh-add id_rsa_github

ssh-add -D

ssh-add ~/.ssh/id_rsa_github

ssh-add ~/.ssh/id_rsa_gitlab

测试 ssh 链接

ssh -T git@github.com

ssh -T git@github2.com

ssh -T git@gitee.com

ssh -T git@gitlab.com

# xxx! You’ve successfully authenticated, but GitHub does not provide bash access.

# 出现上述提示,连接成功

取消 git 全局用户名/邮箱的设置,设置独立的 用户名/邮箱

# 取消全局 用户名/邮箱 配置

$ git config --global --unset user.name

$ git config --global --unset user.email

# 进入项目文件夹,单独设置每个repo 用户名/邮箱

$ git config user.email "xxxx@xx.com"

$ git config user.name "xxxx"

命令行进入项目目录,重建 origin (whatever 为相应项目地址)

$ git remote rm origin

# 远程仓库地址,注意Host名称

$ git remote add origin git@second.github.com:githubUserName/repName.git

$ git remote -v # 查看远程

# ssh -vT git@github.com可以打印log 通过此方法可以debug如果连接不成功

原理分析

ssh 客户端是通过类似 git@github.com:githubUserName/repName.git 的地址来识别使用本地的哪个私钥的,地址中的 User 是@前面的git, Host 是@后面的github.com。

如果所有账号的 User 和 Host 都为 git 和 github.com,那么就只能使用一个私钥。所以要对User 和 Host 进行配置,让每个账号使用自己的 Host,每个 Host 的域名解析到 github.com,如上面配置中的Host gitlab.com。

配置了别名之后,新的地址就是user@host:repName/repName.git(在添加远程仓库时使用)。

这样 ssh 在连接时就可以区别不同的账号了。

使用新的公私钥

情景1:使用新的公私钥进行克隆操作

git clone git@gitlab.com:username/repo.git

注意此时要把原来的github.com配置成你定义的github

情景2:已经克隆,之后才添加新的公私钥,我要为仓库设置使用新的公私钥进行push操作

修改仓库的配置文件:.git/config 为

[remote "origin"]

url = git@gitlab.com:gitlabUserName/repName.git

clone远程代码 在不同电脑上git_Git 同一电脑配置多个远程仓库相关推荐

  1. Go1 头部相机传图到自己电脑上进行开发—环境配置相关

    Go1 相机传图到自己电脑上进行开发-环境配置Trick 0 以头部相机为例发送 Go 1头部相机发送可以参考宇树B站的camera_sdk教程. 本文主要解决在自己电脑上接收图像camera_sdk ...

  2. 在非华为Windows10电脑上安装华为电脑管家

    一.准备内容 ①下载华为电脑管家 ②下载华为电脑管家安装工具 二.在非华为电脑上安装华为电脑管家步骤 2.1.修改系统时间为2020年7月16日 2.2.打开华为电脑管家安装工具进行安装 三.打开电脑 ...

  3. 电脑上mysql数据库无法登录_无法远程登入MySQL数据库的几种解决办法MySQL综合 -电脑资料...

    方法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.ne ...

  4. PLC数据通过无线远程传输到电脑上。也支持力控组态王远程读取,也支持云组态

    PLC远程监控 概述:随着移动互联网的普及,越来越多的用户希望通过智能手机远程监控现场的PLC数据,这样PLC就可以实现在异地监控了. 一.远程PLC监控系统的原理  二. 远程监控PLC的硬件要求 ...

  5. xterm远程连服务器连不上_VS Code Remote 发布!开启远程开发新时代

    今天( 北京时间 2019 年 5 月 3 日 ),在 PyCon 2019 大会上,微软发布了 VS Code Remote,开启了远程开发的新时代!这次发布包含了三款核心的全新插件,它们可以帮助开 ...

  6. eclipse git 取远程代码_【JAVA】Eclipse中使用git进行pull远程代码

    当使用eclipse或者MyEclipse进行pull远程代码的时候,或者github的代码的时候报如下错误代码: 代表我们没有配置我们的Git地址,这里我教大家配置一下.首先下面是错误代码: The ...

  7. 怎样在电脑上上传图片_电脑上回收站怎样恢复

    把桌面上的文件删除,如果想再次找回,只要在电脑的回收站就可以原封不动的把文件找回来.但不小心删除了回收站的信息,怎么办呢?大家遇以这样的情况,也不要太着急,电脑上回收站怎样恢复呢?小编带分享一下解决方 ...

  8. 电脑上传,提高电脑上传速度 怎么提高文件上传速度

    咱们在用家庭上网的时候.经常会上传一些文档活视频之类的文件,那么是不是有时候传的很慢呢?今天小编就给大家介绍一下如何提高电脑上传速度. 首先,影响上传速度的因素很多: 1. 如果网速低也有影响,换个时 ...

  9. 圣斗士星矢手游怎么在电脑上玩 圣斗士星矢电脑版教程

    <圣斗士星矢>手游不仅拿到了漫画原作者车田正美的授权,成为车田正美直接授权的第一个中国游戏.在此基础上,游戏在许多方面都对漫画经典元素进行了还原,不仅有青铜五小强初次较量的银河擂台赛.争分 ...

  10. 怎么在自己的电脑上录音,电脑录音的软件有哪些

    因为工作的关系,我们经常需要在自己的电脑上进行录音,那么怎么在电脑上进行录音呢?电脑录音的软件有耐心呢?其实电脑录音真的还是比较简单的,小编这边就有一个方法可以录音,下面小编便分享出来,希望对大家能够 ...

最新文章

  1. 关于MySQL事务和存储引擎10个FAQ(Frequently asked questions
  2. lay和lied_lie和lay的区别
  3. 【转载】比特币入门教程
  4. java jar包冗余_paip.批处理清理java项目冗余jar的方法
  5. KubeFlow安装指南
  6. 四旋翼双环PID控制
  7. mysql mod如何使用_mysql 操作详解
  8. mexopenCV的配置学习过程
  9. PCL之估计点云子集的表面法线
  10. 使用oracle执行txt语句,oracle常用SQL语句.txt
  11. 解决在嵌入式平台上无法进行字符编码的问题
  12. 全国地区对应身份证号码值关系--身份证号前2位
  13. 单元格下拉全选快捷键_excel下拉全选快捷键是什么
  14. Window.iso镜像文件下载
  15. 蓝桥本第九届省赛刷题记录
  16. 计算机技术服务的增值税税率,咨询系统集成技术服务税率
  17. matlab解微分方程例子,MATLAB解微分方程 [轉] | 學步園
  18. 正则的replace方法详解
  19. 追剧一个月赚了2万,在家用手机做短视频也能赚钱,步骤分享
  20. spring boot 运行提示:Process finished with exit code 1

热门文章

  1. Linux下分卷压缩与解压
  2. 香港各个大学计算机类专业
  3. mysql 错误码1236,MySQL错误:Last_IO_Errno:1236处理办法
  4. Java栈,队列和循环队列的实现
  5. 任正非带领华为三分天下的7大杀招
  6. mtk 6577 root
  7. 【人类历史】从食物采集者到食物生产者
  8. node.js基于vue框架潮牌官网设计与实现毕业设计源码010955
  9. 生成器(generator)理解
  10. 如何更改文件夹图标和颜色