使用多个 GitHub 账号的 SSH 配置与常见问题排查
文章目录
- 使用多个 GitHub 账号的 SSH 配置与常见问题排查
- 摘要
- 目录
- 1. 使用多个 GitHub 账号的场景介绍
- 2. 配置多个 SSH 密钥
- 2.1 生成多个 SSH 密钥
- 2.2 添加 SSH 密钥到 SSH 代理
- 2.3 将 SSH 公钥添加到 GitHub 账户
- 3. 配置 SSH 代理与 GitHub 账户的关联
- 3.1 为不同仓库设置不同的 GitHub 账号
- 4. SSH 连接 GitHub 时常见错误排查
- 4.1 问题 1:`Connection closed by 198.18.0.35 port 22`
- 4.2 问题 2:`Permission denied (publickey)`
- 4.3 问题 3:`Host key verification failed`
- 5. 总结
使用多个 GitHub 账号的 SSH 配置与常见问题排查
摘要
在开发过程中,可能会涉及到多个 GitHub 账号的使用。为了避免每次切换账号时手动输入用户名和密码,我们可以通过配置多个 SSH 密钥来管理这些账号。本文将详细介绍如何为每个 GitHub 账号生成独立的 SSH 密钥、如何配置 SSH 代理、以及在使用 SSH 连接克隆仓库时遇到的常见错误及其解决方案。
目录
- 使用多个 GitHub 账号的场景介绍
- 配置多个 SSH 密钥
- 配置 SSH 代理与 GitHub 账户的关联
- SSH 连接 GitHub 时常见错误排查
- 总结
1. 使用多个 GitHub 账号的场景介绍
在日常开发中,可能有以下场景需要使用多个 GitHub 账号:
- 工作与个人项目分离:你可能有一个工作账号用于公司项目管理,还有一个个人账号用于自己的开源项目或其他私有项目管理。
- 多重身份管理:不同的组织或团队可能要求你使用不同的 GitHub 账号来管理项目。
为了简化这些场景中的账户切换和管理,我们可以通过 SSH 配置,让每个仓库使用特定的 GitHub 账号而无需反复输入密码或切换登录状态。
2. 配置多个 SSH 密钥
2.1 生成多个 SSH 密钥
每个 GitHub 账号需要一个独立的 SSH 密钥。通过 ssh-keygen 命令为每个账号生成密钥,并指定不同的文件名。
为第一个 GitHub 账号生成密钥:
ssh-keygen -t rsa -b 4096 -C "your-email-for-account1@example.com"
命令执行后,它会提示你输入文件名,保存路径可以为:
/home/your-username/.ssh/id_rsa_account1
同样,为第二个账号生成另一个密钥:
ssh-keygen -t rsa -b 4096 -C "your-email-for-account2@example.com"
保存路径可以为:
/home/your-username/.ssh/id_rsa_account2
2.2 添加 SSH 密钥到 SSH 代理
接下来,需要启动 SSH 代理并将生成的密钥添加到代理中。
启动 SSH 代理:
eval "$(ssh-agent -s)"
然后将每个密钥添加到代理中:
ssh-add ~/.ssh/id_rsa_account1
ssh-add ~/.ssh/id_rsa_account2
2.3 将 SSH 公钥添加到 GitHub 账户
在 GitHub 网站上,将每个公钥分别添加到对应的 GitHub 账户中。
- 打开终端并查看公钥内容:
cat ~/.ssh/id_rsa_account1.pub
-
将显示的内容复制,然后登录到第一个 GitHub 账号:
- 进入 Settings -> SSH and GPG keys。
- 点击 New SSH key,粘贴公钥并保存。
-
对第二个账号执行相同的操作,将
~/.ssh/id_rsa_account2.pub添加到 GitHub。
3. 配置 SSH 代理与 GitHub 账户的关联
为了让 Git 在克隆和操作时能够正确选择相应的 SSH 密钥,我们需要通过 SSH 配置文件(~/.ssh/config)来为每个 GitHub 账号设置特定的 Host。
编辑 ~/.ssh/config 文件,添加以下内容:
# Account 1
Host github-account1HostName github.comUser gitIdentityFile ~/.ssh/id_rsa_account1# Account 2
Host github-account2HostName github.comUser gitIdentityFile ~/.ssh/id_rsa_account2
这样,Git 在访问 github-account1 或 github-account2 时,会使用相应的密钥进行身份验证。
3.1 为不同仓库设置不同的 GitHub 账号
在克隆仓库时,指定相应的 Host 名称。例如,克隆第一个账户下的仓库时:
git clone git@github-account1:username/repo.git
对于第二个账户:
git clone git@github-account2:username/repo.git
通过这种方式,你可以轻松管理多个 GitHub 账号,避免反复输入用户名和密码。
【注意⚠️】:
- 上述使用的是:git@github-account1 和 git@github-account2。而不是 github.com;
- 不能使用 github.com,要使用在 config 文件中
Host xxx.com后面的xxx.com进行拉取文件。
所以我在config文件中,把账户1设置为 github.com,账户2设置为 github_account2.com。
这样账户1在clone仓库时,可以直接clone。
账户2需要把url修改为git@github-account2才能clone文件。
下述是我配置的config文件:
# Account 1
Host github.comHostName ssh.github.comUser gitIdentityFile ~/.ssh/id_rsaPort 443# Account 2
Host github_account2.comHostName ssh.github.comUser gitIdentityFile ~/.ssh/daiyuPort 443
4. SSH 连接 GitHub 时常见错误排查
4.1 问题 1:Connection closed by 198.18.0.35 port 22
当尝试通过 SSH 克隆仓库时,可能会遇到类似如下的错误信息:
Connection closed by 198.18.0.35 port 22
fatal: Could not read from remote repository.
原因分析:这个问题通常与网络配置或 SSH 配置不当有关。可能是由于网络环境阻止了端口 22 的 SSH 连接,或者密钥文件没有正确配置。
解决方法:
- 使用端口 443 进行 SSH 连接:在某些受限的网络环境中,端口 22 可能被防火墙阻止。GitHub 提供了备用的
ssh.github.com,可以通过端口 443 连接。
编辑 ~/.ssh/config,将 HostName 修改为 ssh.github.com 并指定使用端口 443:
Host github.comHostName ssh.github.comUser gitIdentityFile ~/.ssh/id_rsaPort 443
保存后再尝试克隆:
git clone git@github.com:username/repo.git
- 检查 SSH 代理:确保 SSH 代理已正确启动,并且密钥已经加载:
ssh-add -l
如果没有密钥,执行:
ssh-add ~/.ssh/id_rsa
- 确认 GitHub 中是否添加了正确的公钥:确保你已经将正确的 SSH 公钥添加到 GitHub。
4.2 问题 2:Permission denied (publickey)
如果遇到 Permission denied (publickey) 错误,说明 SSH 密钥未被正确识别。这可能是由于密钥未添加到 SSH 代理,或是密钥没有添加到 GitHub 账户。
解决方法:
- 使用
ssh-add ~/.ssh/id_rsa添加私钥。 - 检查是否正确添加了公钥到 GitHub 账户。
4.3 问题 3:Host key verification failed
当 Host key verification failed 错误出现时,可能是 GitHub 的主机密钥发生了变更。
解决方法:
使用以下命令清除缓存的 GitHub 主机密钥:
ssh-keygen -R github.com
然后重新尝试连接:
ssh -T git@github.com
5. 总结
通过正确配置 SSH,可以在同一台电脑上同时使用多个 GitHub 账号,无需反复切换或输入密码。关键在于为每个账号生成独立的 SSH 密钥,并通过 ~/.ssh/config 配置文件进行管理。此外,克隆仓库时遇到的常见连接问题大多可以通过修改 SSH 配置或使用备用端口(443)来解决。希望本文能帮助你更好地管理多个 GitHub 账号,并轻松解决 SSH 连接中的问题。
相关文章:
使用多个 GitHub 账号的 SSH 配置与常见问题排查
文章目录 使用多个 GitHub 账号的 SSH 配置与常见问题排查摘要目录1. 使用多个 GitHub 账号的场景介绍2. 配置多个 SSH 密钥2.1 生成多个 SSH 密钥2.2 添加 SSH 密钥到 SSH 代理2.3 将 SSH 公钥添加到 GitHub 账户 3. 配置 SSH 代理与 GitHub 账户的关联3.1 为不同仓库设置不同…...
sql语法学习
学习 SQL(Structured Query Language)语法是数据库开发的基础,主要用于数据库的管理和操作。以下是 SQL 的基本语法和常用操作,涵盖数据查询、插入、更新、删除等。 1. 数据库基础 数据库:存储表和数据的集合。表&am…...
滚雪球学SpringCloud[5.3讲]: 配置管理中的高可用与容错
全文目录: 前言高可用配置中心的搭建为什么需要高可用配置中心?多实例与负载均衡数据一致性实战示例:使用Nginx实现高可用配置中心 Spring Cloud Config中的高可用性高可用性的进一步优化 配置管理中的故障处理策略分布式系统中的常见故障故障…...
电商安全新挑战:筑起数字防御长城,守护业务与数据安全
在当今这个数字化时代,电商行业正以前所未有的速度发展,大数据、人工智能等技术的融入不仅重塑了消费模式,更激发了行业新的增长点。然而,这片繁荣景象之下,隐藏着一个不容忽视的暗流——网络安全威胁。从数据泄露到恶…...
Python 单元测试:深入理解与实战应用20240919
Python 单元测试:深入理解与实战应用 引言 在动态语言如 Python 中,代码的灵活性和动态特性使得开发效率大大提升,但也带来了潜在的风险:小的改动可能导致不可预见的功能失效。因此,确保代码逻辑的正确性和稳健性至关…...
二、MySQL环境搭建
文章目录 1. MySQL的卸载步骤1:停止MySQL服务步骤2:软件的卸载步骤3:残余文件的清理步骤4:清理注册表(选做)步骤5:删除环境变量配置 2. MySQL的下载、安装、配置2.1 MySQL的4大版本2.2 软件的下…...
mongoDB 读取数据python版本实现
要使用Python从MongoDB读取数据,你可以使用pymongo库。首先确保你已经安装了pymongo,如果没有安装,可以通过pip来安装它: pip install pymongo 接下来,我将展示如何使用给定的MongoDB连接字符串来连接数据库ÿ…...
java Nio的应用
Java NIO(New Input/Output)是Java 1.4引入的一种非阻塞I/O模型,适用于高性能和高并发的应用程序。以下是NIO的一些主要应用场景和特点: 1. 非阻塞I/O NIO支持非阻塞模式,这意味着线程可以在I/O操作进行时继续执行其…...
双十一有什么好物推荐?值得入手的五款产品
随着双十一狂欢的号角日益临近,这个一年一度的购物盛典即将拉开帷幕!为了让大家在海量的商品中精准定位,圆圆用心整理了一份购物清单,分享那些我亲身试用过,觉得超级值得购买的好物。 这些商品不但价格亲民࿰…...
Nuxt Kit 使用日志记录工具
title: Nuxt Kit 使用日志记录工具 date: 2024/9/23 updated: 2024/9/23 author: cmdragon excerpt: 摘要:本文介绍在Nuxt 3框架的Nuxt Kit中使用日志记录工具的方法,重点讲解useLogger函数的应用,通过创建示例项目一步步展示如何配置和使用日志记录功能来监控应用状态、…...
视频相关处理
1、概念 (1)FPS 是 “Frames Per Second” 的缩写,意思是“每秒帧数”。它表示每秒钟屏幕上显示的图像帧数,用来衡量动画、视频或游戏画面的流畅度。 FPS 越高,画面越流畅,通常来说,30 FPS 被认为是基本流畅,60 FPS 及以上则非常顺滑。FPS 过低 会导致画面卡顿,尤其是…...
关于循环Socket创建超Linux文件句柄限制现象分析
项目场景: 在操作系统的世界中万物皆文件。之前拜读过一些作品:针对于socket的创建,Linux也相应创建文件(专业术语中也称文件句柄),于是,我想做一些关于极限的操作,看看这些极限操作…...
简单说说MySQL中 SELECT 语句执行流程
流程讲解 MySQL 中 SELECT 语句的执行流程分为多个步骤,通常从用户发出查询请求到 MySQL 返回结果包含以下过程: 客户端/服务器通信: 用户向 MySQL 服务器发送 SELECT 查询语句。 查询解析(Parser): MySQ…...
国产游戏技术:迈向全球引领者的征途
目录 国产游戏技术能否引领全球? 一、国产游戏技术的崛起之路 1.1 初期探索与积累 1.2 技术创新的加速 1.3 文化自信的体现 二、国产游戏技术的核心竞争力 2.1 本地化与定制化策略 2.2 技术创新与应用 2.3 产业链协同与生态构建 三、面临的挑战与应对策略…...
小程序体验版无法正常请求接口,开启 调试可以正常请求
在本地开发工具可以正常访问小程序,上传代码后打开体验版,界面无法请求接口,手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码…...
什么是动态数据脱敏?
原文地址 https://www.bytebase.com/blog/what-is-dynamic-data-masking/ 动态数据脱敏(DDM)动态更改返回给应用程序或用户的数据库记录,以此来实时保护敏感数据,且不会更改静态数据。 DDM 与静态数据脱敏(SDM&#x…...
【机器学习】11——矩阵求导
机器学习11——矩阵求导 打公式不太好标注,全图警告!!! 文章目录 机器学习11——矩阵求导1.1标量对向量1.2标量对矩阵2.1向量对标量2.2向量对向量2.3向量对矩阵 1.1标量对向量 1.2标量对矩阵 X是m*n的矩阵,不严谨&am…...
Spring Boot 实战:结合策略模式实现动态定价服务
引言 在现代商业环境中,价格策略的灵活性对于吸引客户和提高市场竞争力至关重要。传统的定价方法往往固定不变,而随着市场的变化和技术的发展,能够根据不同的条件和场景来调整价格的动态定价策略变得越来越重要。Spring Boot 框架以其简洁的…...
Serverless架构
Serverless架构:漂浮在云端的轻盈与自由 类似于 Fn Project 的 Serverless 开源服务有很多,它们都旨在简化函数即服务(FaaS)的开发流程,使得开发者可以更专注于业务逻辑而不是底层基础设施。下面列举了一些知名的 Serverless 开源平台和服务…...
9.20日学习记录及相关问题解答
部分一 今天看了一本古老的书。学到了一些有关计算机的远古的知识。弥补了一些之前没有意识到的空白点。 原来上个世纪就有AI这个东西了 现阶段的主流模式,在许多年前其实是将来要发展的对象。 B/S指的是客户机/服务器结构模式 C/S是在B/S基础上发展过来的。三层结…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
