10分钟教你本地配置多个git ssh连接的方法

前言

你最近换电脑了吗?还记得如何在本地配置多个 git ssh 连接吗?一般公司用的是自己内网部署的 gitlab 服务器进行代码管理,开发者使用的是公司的用户名和公司的邮箱,而在个人的开源项目中,我们的代码托管于 github,这个时候就需要两个或多个以上的 SSH-Key 去进行登录,方便代码的拉取与推送。

文章大纲

  • 查看所有 ssh key
  • 分别配置 gitlab 内网 和 github 外网 ssh
  • 进行测试

第一步:查看所有 SSH-Key

打开 bash/zsh 终端:执行以下命令

$ cd ~/.ssh/
$ ls

输出如下:

KaydeMBP:~ kayliang$ cd ~/.ssh/
KaydeMBP:.ssh kayliang$ ls
config   github_id-rsa.pub gitlabnei_id-rsa.pub
github_id-rsa  gitlabnei_id-rsa known_hosts

第二步:生成一个 ssh-key,用于配置公司的 GitLab

在~/.ssh/目录会生成gitlab_id-rsa和gitlab_id-rsa.pub私钥和公钥。

$ ssh-keygen -t rsa -C "xxx@xxx.com" -f ~/.ssh/gitlabnei_id-rsa

查看你的 public key,我们将gitlabnei_id-rsa.pub中的内容粘帖到公司GitLab服务器的SSH-key的配置中。

# 把文件内容打印到命令行工具上,方便复制
cat ~/.ssh/gitlab_id-rsa.pub

格式如下所示,记得把整个文本包括 ssh-rsa 也复制到剪切板上。

ssh - rsa;

xxxxxxxxx;
xxxxx;

然后粘贴到网站的 ssh 配置中:

第三步:Github 生成一个 SSH-Key

在~/.ssh/目录会生成github_id-rsa和github_id-rsa.pub私钥和公钥。我们将github_id-rsa.pub中的内容粘帖到github服务器的SSH-key的配置中。

ssh-keygen -t rsa -C "xxxx@xxxx.com" -f ~/.ssh/github_id-rsa

第四步:在 ~/.ssh 目录下添加config配置文件用于区分多个 SSH-Key

1. 添加识别 SSH keys 新的私钥

默认只读取 id_rsa,为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中

# 查看已经添加的私钥
ssh-add -l

3072 SHA256:xxxxxxxxxx linjy@xxxx.com.cn (RSA)
$ ssh-agent bash
$ ssh-add ~/.ssh/github_id_rsa
$ ssh-add ~/.ssh/gitlabnei_id_rsa

这一步很重要,否则你在后面进行 git clone 拉取 ssh 地址的仓库会出现错误。

KaydeMBP:chengdu-project kayliang$ git clone ssh://git@xxxxxxx.amazonaws.com.cn:5337/xdata/SH2019GH109/chengdu-natural-resources-cli3.git
Cloning into 'chengdu-natural-resources-cli3'...
no such identity: gitlabnei_id-rsa: No such file or directory
git@xxxxxxx.amazonaws.com.cn: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

2. 添加 config 配置文件

vi ~/.ssh/config

设置文件内容如下,这里要注意的是:配置的信息必须跟你在仓库界面的 ssh 的地址一致,因为有时候 http 地址跟 ssh 地址的端口是不一样的。

地址:ssh://git@xxxxx.amazonaws.com.cn:5337/xdata/SH2019GH109/xxxxx.git

根据上面的地址可以进行配置如下:

# gitlab
 Host xxxxx.amazonaws.com.cn # 这里是 ssh 地址的 ip
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/gitlabnei_id-rsa
 Port 5337 # 这里是 ssh 地址的端口

# github
Host github.com
 HostName github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/github_id-rsa

# 更多配置 ...

配置文件参数:

  • Host:可以看作是一个你要识别的模式,对识别的模式,进行配置对应的主机名和 ssh 文件。
  • HostName: 要登录主机的主机名。
  • User: 登录名。
  • IdentityFile: 指明上面 User 对应的 identityFile 路径。
  • Port: ssh 端口

第五步:测试

测试 github 外网 ssh 地址

ssh -T git@github.com

输出:

Hi Jecyu! You've successfully authenticated, but GitHub does not provide shell access.

测试公司内网 ssh 地址

ssh -T git@xxxx.amazonaws.com.cn
Welcome to GitLab, @linjy!

就表示成功的连接公司的 gitlab。

最后

使用 git clone 分别获取你的 github 个人项目,以及获取 gitlab 的公司内网项目:

git clone ssh://xxxx.amazonaws.com.cn:5337/xdata/SH2020GH036/xxxx.git
cd my-project
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

因为个人项目和公司项目的账户和邮箱都不一样,记得在各自的仓库下进行配置,这样提交时的 commit 记录的用户和邮箱都是正确的,当然这一步对你是否能用 ssh 提交和获取不影响的,只是为了看 commit 记录的时候更清晰。

 git config user.name xxxx
 git config user.email xxxx@xxx.com

小结

本文是笔者在实践中的记录,也参考了一些网上优秀的作者经验,如有错误请指出。
参考资料

更进一步阅读,了解 SSH 知识:https://segmentfault.com/q/1010000000835302 和 《SSH,The Secure Shell》 书本。

git 手册

到此这篇关于10分钟教你本地配置多个git ssh连接的方法的文章就介绍到这了,更多相关git ssh连接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vscode中利用git通过ssh连接github的方法

    vscode目前发展的很快,易用性方面也远远超过其他文本编辑器如nodepad,这次在使用中发现vscode继承的git功能十分强大和方便,这里将git于github连接的步骤简单描述一下,用以备忘. 1.首先已经安装了git的控制台版本 初始化 $ git config --global user.name author #将用户名设为author $ git config --global user.email author@corpmail.com #将用户邮箱设为author@corpm

  • 10分钟教你本地配置多个git ssh连接的方法

    前言 你最近换电脑了吗?还记得如何在本地配置多个 git ssh 连接吗?一般公司用的是自己内网部署的 gitlab 服务器进行代码管理,开发者使用的是公司的用户名和公司的邮箱,而在个人的开源项目中,我们的代码托管于 github,这个时候就需要两个或多个以上的 SSH-Key 去进行登录,方便代码的拉取与推送. 文章大纲 查看所有 ssh key 分别配置 gitlab 内网 和 github 外网 ssh 进行测试 第一步:查看所有 SSH-Key 打开 bash/zsh 终端:执行以下命令

  • 10分钟教你用Python实现微信自动回复功能

     01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把接收到的消息统一发送到文件助手里面,方便统一查看. 效果如下: 02 环境准备 Python版本:3.6.0 系统平台:Windows 10 X64 IDE:pycharm 相关模块: time模块: itchat模块: 以及一些Python自带的模块. 03 实现原理 其实原理很简单,主要是利用itcha

  • 10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径

    深度优先算法(DFS 算法)是什么? 寻找起始节点与目标节点之间路径的算法,常用于搜索逃出迷宫的路径.主要思想是,从入口开始,依次搜寻周围可能的节点坐标,但不会重复经过同一个节点,且不能通过障碍节点.如果走到某个节点发现无路可走,那么就会回退到上一个节点,重新选择其他路径.直到找到出口,或者退到起点再也无路可走,游戏结束.当然,深度优先算法,只要查找到一条行得通的路径,就会停止搜索:也就是说只要有路可走,深度优先算法就不会回退到上一步. 如果你依然在编程的世界里迷茫,可以加入我们的Python学

  • 三分钟教你如何在IDEA中快速创建工程的方法

    1. 创建Java工程 1. 打开的初始界面 Create New Project:创建一个新的工程 Import Project:导入一个现有的工程 Open:打开一个已有工程.比如:可以打开 Eclipse 项目. Check out from VersionControl:可以通过服务器上的项目地址 check out Github上面项目或其他 Git 托管服务器上的项目 2. 新建项目 如果要创建 Web 工程,则需要勾选上面的 Web Application.如果不需要创建 Web

  • linux环境下配置mysql5.6支持IPV6连接的方法

    简介: 本文主要介绍在linux系统下,如何配置mysql支持IPV6的连接. 环境要求: 1.debian7.5操作系统虚拟机 2.mysql5.6版本的数据库,并且已经在debian7.5系统上安装成功,可以正常通过IPV4的地址连接 配置方法 1.确认系统是否支持IPV6,输入命令ping6 ::1,有下图回显说明支持IPV6地址 2.如果不支持,配置网卡eth0增加IPV6地址 1)输入命令vim /etc/network/interfaces ,增加inet6的网卡配置 2)输入命令

  • win2003 Server配置SQL Server 2005远程连接的方法

    今天第一次玩SQL Server 2005,需要配置远程连接.我废话少说,直入主题,总结下我从新手立场在win2003 server环境下去配置的过程. 第一步,设置服务器 首先在SQL配置管理器中,选择网络配置-TCP/IP 如上,总结, 1,我们需要设置的是IP地址(服务器的IP), 2,TCP端口(所有TCP的IP都要设置统一,一般是默认1433,但是我修改成了6096) 3,把"已启用"改成"是" 之后,我们修改对客户端的定义 选中客户端协议中的TCP/IP

  • springCloud config本地配置操作

    一般很多项目不是在springcloud的环境中使用的,但是需要用到分布式配置中心来管理一些外部或者项目的配置,这个时候我们可以使用springcloud-config的本地配置. 配置config-server服务端 使用start.spring.io创建一个springcloud工程,pom中引入: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-c

  • 五分钟教你手写 SpringBoot 本地事务管理实现

    白菜Java自习室 涵盖核心知识 1. SpringBoot 事务 一直在用 SpringBoot 中的 @Transactional 来做事务管理,但是很少没想过 SpringBoot 是如何实现事务管理的,今天从源码入手,看看 @Transactional 是如何实现事务的,最后我们结合源码的理解,自己动手写一个类似的注解来实现事务管理,帮助我们加深理解. 1.1. 事务的隔离级别 事务为什么需要隔离级别呢?这是因为在并发事务情况下,如果没有隔离级别会导致如下问题: 脏读 (Dirty Re

  • 5分钟教你实现用docker搭建Redis集群模式和哨兵模式

    如果让你为开发.测试环境分别搭一套哨兵和集群模式的redis,你最快需要多久,或许你需要一天?2小时?事实是可以更短. 是的,你已经猜到了,用docker部署,真的只需要十几分钟. 一.准备工作 拉取redis镜像 运行如下命令: docker pull redis 该命令拉取的镜像是官方镜像,当然你可以搜索其他的镜像,这里不做深入 查看镜像情况: 二.部署redis哨兵主从模式 什么是哨兵模式?--请自行百度 1.什么是docker compose? Docker Compose 可以理解为将

  • 10分钟学会VS NuGet包私有化部署

    目录 前言 什么是BaGet 搭建私有化BaGet服务器 使用私有化程序包 前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#) web版本(推荐):小白2分钟学会Visual Studio将引用包打包到NuGet上 其实官方也提供了私有化部署(NuGet.Server.ProGet.MyGe等),我们就来基于BaGet进

随机推荐