github 多个账号共享ssh key 的设置方法

确认本机是否已有ssh key

首先确认自己系统内有没有 ssh key。
bash复制代码cd ~/.ssh

ls *.pub # 列出所有公钥文件id_rsa.pub

若有,确认使用当前 key 或者生成新 key,若没有,生成新 key。由于我需要登录两个帐号,所以在已经存在的 key 的基础上,再生成一个 key。
生成 ssh key

ssh-keygen -t rsa -C "your-email-address"

-t 是使用的算法,一般都选择 rsa -C 为备注,一般以邮箱作为备注,提示保存文件时以 id_rsa_work 保存,用于区分第一个密钥id_rsa。
至此,我的 ~/.ssh 文件夹内共有4个文件。

├── id_rsa
├── id_rsa_work
├── id_rsa_work.pub
├── id_rsa.pub
└── known_hosts

其中以 .pub 结尾的为公钥文件,用于填写在GitHub网站,同名不带 .pub 后缀的为私钥文件,自己保存不要泄漏,known_hosts 文件为已知 host 缓存,目的是加快 ssh 访问速度。

添加 ssh key

为 GitHub 添加 ssh key
登录 GitHub 在账户
Settings > SSH and GPG keys > New SSH key > Add key 将之前生成的 ssh key 的 pub 文件中的内容粘贴进去,另一个账户也如法炮制。
为本机添加 ssh key

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_work

如果成功会看到 Identity added 的反馈。

检查ssh key

关于ssh有一个奇怪的三角恋。 在这段特殊的浪漫故事中有三个角色:

ssh-agent命令

  • 保存身份验证密钥(身份)并与 ssh 共享的程序
    ssh命令
  • 键入 ssh 时使用的远程登录客户端
    ~/.ssh/config文件 - 可用于向 ssh 客户端提供选项的配置文件

让我们看看这些是如何一起玩的。

  • 第一站,ssh-agent。 这为您保存着您的钥匙。 在 ssh-agent (man ssh-agent) 的使用说明中:多个身份可以同时存储在 ssh-agent 中,如果存在,ssh 将自动使用它们。

这意味着:当 ssh 向 ssh-agent 询问身份时,ssh 可能会收到多个身份,并且会尝试使用所有身份。

那么你怎么知道代理有哪些身份呢? 奇怪的是,列出所有身份的命令是

ssh-add -L。

运行这个命令,可以看到我们所有的密钥,确认我们刚刚新增的密钥已经在ssh-agent管理的身份列表中。
现在我们知道 ssh-agent 将提供多个密钥。

ssh 如何使用这些密钥/身份? 这一次,让我们看一下
man ssh_config

除非设置了 IdentitiesOnly,否则身份验证代理表示的任何身份都将用于身份验证。

这实际上是说,ssh 会贪婪地尝试它提供的每个身份,除非你有使用 IdentitiesOnly 设置,比如:

ssh -o 'IdentitiesOnly yes' -i keypair.pem ec2-user@some-amazon-host

生成配置文件

生成配置文件用于根据情况选择不同的 ssh key。

touch ~/.ssh/config
vi config

写入内容

#Default GitHub
Host github.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa#Work GitHub
Host github.com-workHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_work

两个配置不同的地方在于 Host 和 IdentityFile,第二处 Host 填写的 github.com-work 是为了区分默认配置。

清除credential.helper设置

 git config --global --unset credential.helpergit config --system --unset credential.helpergit config --local --unset credential.helper

测试SSH连接

使用以下命令测试SSH连接。
ssh -T -v github.com-work

确认得到如下响应:

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

配置本地仓库

对于本地已存在的仓库,查看remote。
git remote -v

添加/更改remote,不能使用HTTPS形式的remote,必须使用如下SSH形式。

git remote add origin git@github.com-work:username/reponame.git

如果已经存在remote,使用set-url 更改origin
git remote set-url origin git@github.com-work:username/reponame.git

git 就会依据 Hostname 选择需要的账户进行 push 和 pull 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app自定义导航栏下拉刷新实现

【z-paging下拉刷新、上拉加载】高性能,全平台兼容。支持虚拟列表,分页全自动处理 - DCloud 插件市场 先记录一个插件,后续更新

【WPF应用31】WPF基本控件-ListView的详解与示例

WPF(Windows Presentation Foundation)是.NET框架的一个组成部分,它用于构建桌面应用程序的用户界面。ListView是WPF中一个非常强大的数据展示控件,它可以用来显示一系列的项,类似于Windows资源管理器中的文件列表。Li…

MyBatis动态SQL--where 标签

在上一章中的介绍if 标签时,其实我们发现了一个问题,就是当所有条件都为空时,sql语句会多出来一个where,而且有时候会多出来一个and等等。 而where标签的作用就是为了解决这类问题,where 标签可以自动去除多余的where…

Java基础 - 10 - File、IO流(一)

File:代表文本 IO流:读写数据 一. File File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件或文件夹) 注意:File类只能对文件本身进行操作,不能读写文件里…

区块链技术的基本概念学习

1.去中心化 去中心化就是你我之间转账,不依赖于银行或支付处理公司。 2.区块链网络 区块链网络是由分布在全球的节点组成,每个节点都有完整的区块链副本。 3.区块 区块就是区块链中的的一个块,这个块里面包含了很多信息,如交…

搜维尔科技:TechViz 虚拟现实在工业项目中沉浸式体验

TechViz虚拟现实在工业项目中沉浸式体验 搜维尔科技:TechViz 虚拟现实在工业项目中沉浸式体验

Deepface Lab2.0参数选取建议

制作非常基本和低质量/分辨率的 Deepfakes 的最低要求: - 支持 AVX 和 SSE 指令的现代 4 核 CPU - 16GB RAM - 具有 8GB VRAM 的现代 Nvidia 或 AMD GPU - 充足的存储空间和大页面文件 确保启用硬件-加速 Windows 10/11 下的 GPU 调度并确保您的 GPU 驱动程序是最新…

MyBatis动态SQL--if 标签

mybatis动态sql对我们来说是非常常见的,比如在下面这样一个场景中, 我们需要多条件查询,但是查询的条件又不是固定的,是可以动态改变的,那我们就需要用到动态sql去完成。 动态SQL之 if 标签 接下来我们介绍第一个动态…

Day43 动态规划 part05

Day43 动态规划 part05 1049.最后一块石头的重量II 我的思路: 提示说和划分两个和相等的子集差不多,猛然想到,这道题不就是划分子集,用sum - 和最大*2 代码就是划分和相同的子集的变形 解答: class Solution {public int last…

【JavaScript】函数 ⑥ ( 使用 arguments 获取所有实参 | arguments 内置对象 | 伪数组概念 )

文章目录 一、使用 arguments 获取所有实参1、arguments 内置对象2、伪数组概念3、arguments 实参遍历4、arguments 代码示例 - 基本使用5、arguments 代码示例 - 遍历实参 一、使用 arguments 获取所有实参 1、arguments 内置对象 在 定义 JavaScript 函数 时 , 有时 不确定 形…

使用LangChain编写图检索查询实现RAG

大家好,检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种先进的人工智能技术,通过整合大型语言模型(LLM)的内部知识和外部权威数据源,来提升生成式AI模型的表现。 本文…

安全可靠!麒麟信安操作系统各版本均不受liblzma/xz漏洞影响!

近日,XZ Utils 5.6.0和5.6.1版本存在严重后门风险的消息披露后,麒麟信安立即展开全面排查,经分析验证,麒麟信安操作系统各版本均不受liblzma/xz漏洞影响。 关于liblzma/xz漏洞 漏洞描述 xz 5.6.0 与 5.6.1 版本的上游代码中发现…

ComplexHeatmap绘图:注释、图例、热图基础(自备)

目录 基础介绍 Heatmap绘图基础参数 数据 作图参数 Heatmap Annotations(注释) 基础注释设置 简单注释测试 anno_points散点注释 anno_lines连线注释 anno_barplot条形图 anno_boxplot箱线图 anno_histogram直方图 热图组合 基础组合 进行…

【热门话题】文言一心与ChatGPT-4:一场跨时代智能对话系统的深度比较

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 文言一心与ChatGPT-4:一场跨时代智能对话系统的深度比较一、技术背景…

Maven--lib分离的打包方式

就是把lib包和source源码分开打包。优势就是,面对频繁更新的应用场景时,可以只更新源码包(当然,前提是你的依赖没有增减)。尤其是使用jenkins更新项目时,会省去很多时间吧? 不同项目的 lib之间不…

SQL语句生成器,支持MSSQL/MYSQL/SQLITE/ACCESS/EXCEL

经过7个月的艰苦开发,SQL语句生成器终于和各位见面了,因为工程量浩大,一度做到崩溃,差点烂尾,好在经过N次激烈思想斗争后还是坚持了下来累累累累累累累 本软件能够自动生成SQL语句及对应的易语言代码,还有相…

Golang vs Java

目录 前言 一、语言背景与特性 二、性能与效率 三、生态系统与库支持 四、开发体验与工具支持 五、微服务架构设计中的对比 六、总结与建议 前言 在当今的软件开发世界中,选择合适的编程语言对于项目的成功至关重要。GoLang(也称为Golang&#x…

java入门第1课

最近想要入门一下java,目标很简单,就是学习Java的基本语法,内置数据结构;至于数据库啥的往后再说。由于是入门,所以就没有太难的东西,全都是基本的,还要个人吐槽,如果有错误的观点&a…

Yocto理论基础之定制镜像

Yocto理论基础之定制镜像 一、使用local.conf定制二、 使用IMAGE_FEATURES 和 EXTRA_IMAGE_FEATURES定制三、通过Custom .bb文件定制四、定制包组packagegroups五、定制系统名hostname 一、使用local.conf定制 最简单的方式就是通过conf/local.conf文件来定制image的组件&…

图片二维码如何制作生成?常规图片格式的二维码制作技巧

图片是展示信息很常用的一种方式,而现在查看图片很多人会通过二维码的形式来展现,这种方式优势在于更加的灵活,能够通过一个二维码展示大量的图片内容。那么图片二维码是如何制作生成的呢? 想要快速的将图片转二维码使用&#xf…