使用多个 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基础上发展过来的。三层结…...
Gemini 2.0与Gemma混搭开发:手把手教你构建低成本AI代理系统
Gemini 2.0与Gemma混搭开发:构建低成本AI代理系统的实战指南 1. 双轨战略的技术架构设计 谷歌的闭源Gemini与开源Gemma组合为开发者提供了独特的混合部署可能。这种架构设计的核心在于分层处理:将计算密集型任务交给云端Gemini处理,而设备端则…...
Fish Speech 1.5语音克隆5分钟快速部署:零基础小白也能玩转AI配音
Fish Speech 1.5语音克隆5分钟快速部署:零基础小白也能玩转AI配音 1. 认识Fish Speech 1.5语音克隆技术 Fish Speech 1.5是当前最易上手的开源语音克隆工具之一。想象一下,你只需要录制10秒钟的语音样本,就能让AI用你的声音朗读任何文本——…...
PyTorch 2.8镜像创意实践:AI音乐生成+歌词视频同步+多模态情感渲染
PyTorch 2.8镜像创意实践:AI音乐生成歌词视频同步多模态情感渲染 1. 项目背景与镜像优势 在数字内容创作领域,音乐视频制作一直是个耗时费力的过程。传统流程需要音乐制作、歌词设计、视频剪辑等多个专业环节配合,成本高且周期长。PyTorch …...
Qwen-Image-Edit快速上手:模糊图片变清晰,效果惊艳实测
Qwen-Image-Edit快速上手:模糊图片变清晰,效果惊艳实测 1. 引言:从模糊到清晰的魔法 你是否遇到过这样的困扰?手机里珍藏的老照片变得模糊不清,或是抓拍的精彩瞬间因为手抖而糊成一片。传统修图软件对这些模糊图片往…...
阿姆智创15.6寸工控一体机厂家,源头智造ODM定制方案,赋能SMT产线及设备场景
阿姆智创15.6寸工业触控工控一体机,以强悍硬件性能、丰富工业接口、稳定系统适配与一站式解决方案,深度服务SMT产线、运动控制、机器视觉等工业场景,为设备厂商与制造企业提供高可靠、可定制、易集成的智能控制终端,助力工业自动化…...
OpenClaw隐私保护方案:Qwen3.5-9B本地处理医疗图片的10个细节
OpenClaw隐私保护方案:Qwen3.5-9B本地处理医疗图片的10个细节 1. 为什么选择本地化医疗图片处理 去年帮家人整理体检报告时,我遇到一个两难问题:既想用AI分析CT影像的异常阴影,又担心把敏感数据上传到第三方平台。这个矛盾促使我…...
嵌入式工程师的中年危机与转型策略
1. 嵌入式工程师的中年危机:一个行业的缩影44岁的梧桐,一位拥有21年嵌入式开发经验的资深架构师,在2023年的寒冬里收到了人生第一封解约通知书。这个场景让我想起公司上周的招聘会——38岁的候选人简历被默默放进了"待定"文件夹&am…...
零基础玩转OpenClaw:Phi-3-mini-128k-instruct镜像云端体验
零基础玩转OpenClaw:Phi-3-mini-128k-instruct镜像云端体验 1. 为什么选择云端体验OpenClaw 作为一个长期关注AI自动化工具的技术爱好者,我一直在寻找一个既强大又易于上手的本地AI助手框架。OpenClaw的出现让我眼前一亮,但第一次尝试本地安…...
5分钟掌握ImStudio:免费高效的实时GUI布局设计终极方案
5分钟掌握ImStudio:免费高效的实时GUI布局设计终极方案 【免费下载链接】ImStudio Real-time GUI layout designer for Dear ImGui 项目地址: https://gitcode.com/gh_mirrors/im/ImStudio 你是否曾经为调试用户界面而反复编译代码?是否厌倦了在代…...
怎么将AI生成的图片转成可编辑的矢量图?
做科研的宝子们谁懂啊!绘制科研插图真的太费时间了😭 要么得花几天啃专业绘图软件,要么找素材拼凑导致视觉割裂、标注出错,好不容易用AI生成一张满意的图,却发现无法编辑、分辨率不足,连期刊投稿的基本要求…...
