10分钟教你本地配置多个git ssh连接的方法
作者:纳撸多 发布时间:2022-03-05 04:44:53
目录
前言
第一步:查看所有 SSH-Key
第二步:生成一个 ssh-key,用于配置公司的 GitLab
第三步:Github 生成一个 SSH-Key
第四步:在 ~/.ssh 目录下添加config配置文件用于区分多个 SSH-Key
1. 添加识别 SSH keys 新的私钥
2. 添加 config 配置文件
第五步:测试
最后
小结
前言
你最近换电脑了吗?还记得如何在本地配置多个 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 手册
来源:https://juejin.im/post/6896288225212497928
猜你喜欢
- 日历功能在个人博客网站及一些任务类网站都有广泛的应用,当然,在一些通用网站的后台也不乏这些日历功能的综合应用,所以,一个结构合理、代码清晰的
- 效果图游戏可以通过这个链接进入关于JS构建过程首先,我创建了一个对象,其中包含每种可能性的文本格式(石头、纸、剪刀),然后将图像源也添加到该
- 一、问题描述一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No
- 微信小程序分享效果:js代码:page({/** * 用户点击分享按钮或右上角分享 */ onShareAppMessage: functi
- 工具版本python版本:3.8 django版本:2.0.0 mysql版本: 5.5.53 pip3创建工程djangostartDja
- 本文介绍的实例成功的实现了动态行转列。下面我以一个简单的数据库为例子,说明一下。数据表结构这里我用一个比较简单的例子来说明,也是行转列的经典
- 本文实例讲述了python获得文件创建时间和修改时间的方法。分享给大家供大家参考。具体如下:这里需要用户从控制台输入文件路径import o
- Dreamweaver一直是不少网友钟情的网页设计工具,除了它强大的动态效果制作能力外,方便简洁的操作界面更是独具特色,下面我们将以最新版本
- 1、开发环境运行项目python mange.py runserver 0.0.0.0:80002、使用gunicorn在生产环境部署Gun
- 圆形的绘制 :OpenCV中使用circle(img,center,radius,color,thickness=None,lineType
- 图像可能在生成、传输或者采集过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不
- 什么是WaitGroupsWaitGroups是同步你的goroutines的一种有效方式。想象一下,你和你的家人一起驾车旅行。你的父亲在一
- 前言本文使用 cpu 的 tensorflow 2.4 完成迁移学习和模型微调,并使用训练好的模型完成猫狗图片分类任务。预训练模型在 NLP
- 本文实例讲述了Python简单I/O操作。分享给大家供大家参考,具体如下:文件:poem = '''hellowor
- 本文帮你六步改善SQL Server安全规划全攻略。一、什么是SQL注入式攻击所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的
- 服务:# chkconfig --list 列出所有系统服务# chkconfig --list | grep o
- 本文实例为大家分享了JavaScript缓动动画函数的封装代码,供大家参考,具体内容如下本文将从封装缓动动画的以下几个部分进行封装(1、单个
- 一、is_numberic函数简介国内一部分CMS程序里面有用到过is_numberic函数,我们先看看这个函数的结构bool is_num
- 学习前言Inception系列的结构和其它的前向神经网络的结构不太一样,每一层的内容不是直直向下的,而是分了很多的块什么是Inception
- 正态分布应用最广泛的连续概率分布,其特征是“钟”形曲线。这种分布的概率密度函数为:其中,μ为均值,σ为标准差。求正态分布曲线下面积有3σ原则