为多个GitHub账户配置SSH密钥
背景
当需要同时使用多个GitHub账户(例如工作和个人账户)时,默认的SSH配置可能导致冲突。本文介绍如何通过生成不同的SSH密钥对并配置SSH客户端来管理多个账户。
操作步骤
-
生成SSH密钥对
为每个GitHub账户生成独立的密钥对,并指定不同的文件名。命令示例:
# 生成工作账户密钥(默认名称可选) ssh-keygen -t ed25519 -C "your_work_email@example.com" # 保存为 `id_ed25519_work`# 生成个人账户密钥 ssh-keygen -t ed25519 -C "your_personal_email@example.com" # 保存为 `id_ed25519_personal`命令解释:
-
ssh-keygen: 生成SSH密钥对的命令。 -
-t ed25519: 指定密钥类型为Ed25519,这是一种现代且安全的密钥类型。 -
-C "your_email@example.com": 为密钥添加注释,通常使用与GitHub账户关联的电子邮件地址。 -
在提示时选择文件名,例如
id_ed25519_work和d_ed25519_personal,以便后续区分。 -
添加SSH密钥到ssh-agent
-
-
添加SSH密钥到ssh-agent
确保密钥被SSH代理管理:# 启动ssh-agent(如未运行) eval "$(ssh-agent -s)"# 添加密钥(需根据密钥路径调整) ssh-add ~/.ssh/id_ed25519_work ssh-add ~/.ssh/id_ed25519_personal命令解释:
eval "$(ssh-agent -s)": 启动SSH代理并将其环境变量加载到当前Shell会话中。ssh-add ~/.ssh/id_ed25519_work: 将工作账户的SSH密钥添加到SSH代理。ssh-add ~/.ssh/id_ed25519_personal: 将个人账户的SSH密钥添加到SSH代理。
-
配置SSH配置文件 (~/.ssh/config)
创建或编辑配置文件,为每个账户指定对应的密钥和主机别名。配置文件示例:
# 工作账户 Host github.com-workHostName github.comUser gitIdentityFile ~/.ssh/id_ed25519_workIdentitiesOnly yes# 个人账户 Host github.com-personalHostName github.comUser gitIdentityFile ~/.ssh/id_ed25519_personalIdentitiesOnly yes配置解释:
Host github.com-work: 为工作账户设置一个别名,方便后续使用。HostName github.com: 指定实际的GitHub主机名。User git: 指定用于SSH连接的用户名,GitHub的SSH连接始终使用git。IdentityFile ~/.ssh/id_ed25519_work: 指定用于该别名的SSH密钥文件路径。IdentitiesOnly yes: 确保只使用指定的密钥进行身份验证,而不尝试使用其他密钥。
-
将公钥添加到GitHub账户
复制对应公钥内容:cat ~/.ssh/id_ed25519_work.pub cat ~/.ssh/id_ed25519_personal.pub登录GitHub,依次进入 Settings → SSH and GPG keys → New SSH Key,分别添加公钥。
-
测试连接
验证SSH配置是否成功:ssh -T git@github.com-work # 应返回:Hi [work_username]! You've successfully authenticated... ssh -T git@github.com-personal # 应返回:Hi [personal_username]! You've successfully authenticated...命令解释:
ssh -T: 测试SSH连接,-T选项表示不分配伪终端。git@github.com-work: 使用工作账户的别名进行连接。
-
克隆仓库时使用别名
克隆或配置仓库时,需替换URL中的github.com为配置的Host别名:原始URL:
git@github.com:work_account/project.git修改后:
git@github.com-work:work_account/project.git
注意事项
-
权限问题
- 确保
~/.ssh目录权限为700:
chmod 700 ~/.ssh - 密钥文件权限应为
600:
chmod 600 ~/.ssh/id_ed25519_*
- 确保
-
现有仓库配置更新
若已克隆仓库,需修改本地仓库的远程URL:git remote set-url origin git@github.com-work:work_account/repo.git -
多账户Commit关联
SSH密钥仅处理身份验证,仓库内的Commit用户名/邮箱需通过Git配置单独设置:git config user.name "Work Name" git config user.email "work@example.com"
常见问题
-
连接失败
运行 ssh -T -v git@github.com-work 查看详细日志。
-
密钥未加载
确认 ssh-add -l 列出已添加的密钥。
相关文章:
为多个GitHub账户配置SSH密钥
背景 当需要同时使用多个GitHub账户(例如工作和个人账户)时,默认的SSH配置可能导致冲突。本文介绍如何通过生成不同的SSH密钥对并配置SSH客户端来管理多个账户。 操作步骤 生成SSH密钥对 为每个GitHub账户生成独立的密钥对,并指…...
蓝耘智算平台使用DeepSeek教程
目录 一.平台架构与技术特点 二、DeepSeek R1模型介绍与优势 DeepSeek R1 模型简介 DeepSeek R1 模型优势 三.蓝耘智算平台使用DeepSeek教程 展望未来 耘元生代智算云是蓝耘科技推出的一款智算云平台有着以下特点: 一.平台架构与技术特点 基于 Kubernetes 原…...
脚本一键生成管理下游k8s集群的kubeconfig
一、场景 1.1 需要管理下游k8s集群的场景。 1.2 不希望使用默认的cluster-admin权限的config. 二、脚本 **重点参数: 2.1 配置变量。 1、有单独namespace的权限和集群只读权限。 2、自签名的CA证书位置要正确。 2.2 如果配置错误,需要重新…...
发布:大彩科技DN系列2.8寸高性价比串口屏发布!
一、产品介绍 该产品是一款2.8寸的工业组态串口屏,采用2.8寸液晶屏,分辨率为240*320,支持电阻触摸、电容触摸、无触摸。可播放动画,带蜂鸣器,默认为RS232通讯电平,用户短接屏幕PCB上J5短接点即可切换为TTL电…...
简述mysql 主从复制原理及其工作过程,配置一主两从并验证
MySQL 主从复制原理及其工作过程 MySQL 主从复制(Master-Slave Replication)是一种数据同步技术,其中一个 MySQL 实例(主库)将其数据变更(插入、更新、删除)通过二进制日志(Binary …...
华北平原shp格式范围
华北平原是中国东部的重要地理区域,以下是对其的简要介绍: 此数据为付费数据,如有需求,请联系本人。 1. 地理位置与范围 位置:位于中国东部,西起太行山脉和伏牛山,东至黄海、渤海,北…...
Unity 快速入门 1 - 界面操作
本项目将快速介绍 Unity 6的基本操作和功能,下载附件的项目,解压到硬盘,例如 D:\Unity Projects\, 注意整个文件路径中只有英文、空格或数字,不要有中文或其他特殊符合。 1. 打开Unity Hub,点击右上角的 O…...
网站改HTTPS方法
默认的网站建设好后打开的样子那看起来像是钓鱼网站,现在的浏览器特别只能,就是你新买来的电脑默认的浏览器同样也会出现这样“不安全”提示。 传输协议启动了向全球用户安全传输网页内容的流程。然而,随着HTTPS的推出,传输协议通…...
C#+halcon机器视觉九点标定算法
在机器视觉中,九点标定(也称为九点标定法)是一种常用的方法,用于将图像坐标系与物理坐标系进行映射。通过标定,可以将图像中的像素坐标转换为实际物理坐标,或者反之。下面是一个使用C#和Halcon进行九点标定…...
采用idea中的HTTP Client插件测试
1.安装插件 采用idea中的HTTP Client插件进行接口测试,好处是不用打开post/swagger等多个软件,并且可以保存测试时的参数,方便后续继续使用. 高版本(2020版本以上)的idea一般都自带这个插件,如果没有也可以单独安装. 2.使用 插件安装完成(或者如果idea自带插件),会在每个Con…...
记录 | WPF基础学习Style局部和全局调用
目录 前言一、Style1.1 例子1.2 为样式起名字1.3 BasedOn 继承上一个样式 二、外部StyleStep1 创建资源字典BaseButtonStyle.xamlStep2 在资源字典中写入StyleStep3 App.xaml中写引用路径【全局】Step4 调用三、代码提供四、x:Key和x:Name区别 更新时间 前言 参考文章ÿ…...
npm-npm ERR! missing script: serve
1.前言 vue运行项目时报错 npm ERR! missing script: serve 2.解决 在使用npm(Node Package Manager)时遇到“npm ERR! missing script: serve”的错误通常意味着在项目的package.json文件中没有定义名为serve的脚本。或者是未找到package.json文件。…...
重新刷题求职2-DAY6-哈希表
1.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false提示: 1 < s.leng…...
为什么在Rust中要用Struct和Enum组织数据?
为什么在Rust中要用Struct和Enum组织数据? Rust是一门注重内存安全和高效的系统编程语言,其类型系统的设计哲学强调明确性和安全性。struct(结构体)和enum(枚举)是Rust中组织数据的核心工具,它…...
性能优化中的配置优化
配置优化主要包括JVM,连接池,线程池,缓存机制,CDN等优化手段,这些优化提高了资源利用率,最大限度地提升了服务器性能。 JVM配置优化 合理的分配堆与非堆的内存,配置合适的内存回收算法&#x…...
【STM32】HAL库USB虚拟U盘MSC配置及采用自带的Flash作为文件系统
【STM32】HAL库USB虚拟U盘MSC实现配置及采用自带的Flash作为文件系统 本文将自带的Flash作为文件系统 通过配置USB的MSC功能实现虚拟U盘 没有单独建立FATFS文件系统 仅仅是配置USB和Flash读写而已 当然 这里也可以用外部Flash等等 也可以配置文件系统来进行套壳 但总体而言不如…...
深浅拷贝~
深浅拷贝:直接赋值给的是地址,如果修改赋值后的变量,实际上连同原变量的值一并修改了。 浅拷贝 展开运算符 {...obj} 拷贝对象 Object.assign(新,旧) 深拷贝 递归:自己调用自己 以下实际是浅拷贝 递归调用处理数组问题…...
动手学图神经网络(12):MovieLens上的链接回归
MovieLens上的链接回归 在MovieLens数据集上进行评分预测的实践过程,包括数据处理、模型构建、训练以及评估等步骤,预测用户对电影的评分(即边的属性值)。 环境设置 使用pip安装pyg - lib、pytorch_geometric、sentence_transformers、fuzzywuzzy、captum等。 import t…...
开源项目介绍-词云生成
开源词云项目是一个利用开源技术生成和展示词云的工具或框架,广泛应用于文本分析、数据可视化等领域。以下是几个与开源词云相关的项目及其特点: Stylecloud Stylecloud 是一个由 Maximilianinir 创建和维护的开源项目,旨在通过扩展 wordclou…...
Zookeeper是如何解决脑裂问题的?
大家好,我是锋哥。今天分享关于【Zookeeper是如何解决脑裂问题的?】面试题。希望对大家有帮助; Zookeeper是如何解决脑裂问题的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 通过多种机制来解决脑裂&…...
算法13(力扣225)-用队列实现栈
1、问题 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。…...
【Elasticsearch】文本分类聚合Categorize Text Aggregation
响应参数讲解: key (字符串)由 categorization_analyzer 提取的标记组成,这些标记是类别中所有输入字段值的共同部分。 doc_count (整数)与类别匹配的文档数量。 max_matching_length (整数)从…...
【redis】缓存设计规范
本文是 Redis 键值设计的 14 个核心规范与最佳实践,按重要程度分层说明: 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析: 是否需要排序?: zset(有序集合)用…...
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》061-Vue Router的动态路由
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
流媒体缓存管理策略
缓存管理策略是指为了优化性能、资源使用和用户体验而对缓存数据进行管理的方法和规则。以下是一些常见的缓存管理策略: 1. LRU(Least Recently Used,最近最少使用) 原理:当缓存满了,需要腾出空间时&…...
2025简约的打赏系统PHP网站源码
源码介绍 2025简约的打赏系统PHP网站源码 源码上传服务器,访问域名/install.php安装 支持自定义金额打赏 集成支付宝当面付 后台管理系统 订单记录查询 效果预览 源码获取 2025简约的打赏系统PHP网站源码...
交叉编译工具链下载和使用
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
BUU28 [GXYCTF2019]BabySQli1
常规万能密码,发现登不上去 过滤掉了or,,当尝试了n种方法以后,最关键的是发现()居然也被过滤了 哈哈,那玩个淡, 再搜wp!! 当输入admin的时候,提示密码错误࿰…...
ubuntu20.04+RTX4060Ti大模型环境安装
装显卡驱动 这里是重点,因为我是跑深度学习的,要用CUDA,所以必须得装官方的驱动,Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/,选择类型,最新版本下载。 挨个运行&#…...
Rust语言进阶之标准输入: stdin用法实例(一百零五)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...
