一、准备工作

  1. 生成多对 SSH Key

    • 为每个用户(如“个人”、“公司”)生成一对独立的 SSH Key。

    • 示例(在 Git Bash 或 Linux 终端中执行):

      # 个人
      ssh-keygen -t rsa -b 4096 -C "personal@example.com" -f ~/.ssh/id_rsa_personal
      # 公司
      ssh-keygen -t rsa -b 4096 -C "work@example.com"     -f ~/.ssh/id_rsa_work
      
  2. 将公钥添加到对应的 Git 服务器

    • 登录 GitHub/Gitee 等,将 ~/.ssh/id_rsa_personal.pub~/.ssh/id_rsa_work.pub 分别添加到对应账号的 SSH Keys 中。

二、统一 SSH 配置

编辑(或创建)SSH 配置文件,指明不同 Host 使用不同密钥。

注意:Linux 下私钥文件权限必须为 600,目录 ~/.ssh 必须为 700,否则 SSH 将拒绝加载密钥。

chmod 600 ~/.ssh/id_rsa_personal ~/.ssh/id_rsa_work
chmod 700 ~/.ssh

~/.ssh/config(Windows 下为 C:\Users\<用户名>\.ssh\config)中添加:

# 个人账号
Host github-personalHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_personalIdentitiesOnly yes# 公司账号
Host github-workHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_workIdentitiesOnly yes
  • Host 为自定义主机别名,用于替代 github.com
  • IdentityFile 指向对应私钥的绝对路径。
  • IdentitiesOnly yes 强制仅使用上述 Key。

三、Git 层面自动切换配置

3.1 全局 Git 配置打基础

在任意环境下,都建议先在全局(~/.gitconfig 或 Windows %USERPROFILE%\.gitconfig)设置“默认”身份,例如公司:

[user]name  = 公司用户名email = work@example.com

3.2 基于路径的自动切换(Linux/Windows 均可)

Git 2.13+ 支持 includeIf,可按目录自动加载不同配置[1]。

  1. 创建个人配置文件

    # ~/.gitconfig-personal
    [user]name  = 个人用户名email = personal@example.com
    
  2. 修改主配置
    ~/.gitconfig(或 Windows 上的 %USERPROFILE%\.gitconfig)末尾添加:

    [includeIf "gitdir:~/Code/personal/"]path = ~/.gitconfig-personal
    
    • gitdir: 后面须为对应目录的绝对路径,末尾加 /

    • Windows 下也支持:

      [includeIf "gitdir:C:/Users/用户名/Code/personal/"]path = C:/Users/用户名/.gitconfig-personal
      
    • 保存后,进入该目录内执行:

      git config user.name    # 应输出“个人用户名”
      git config user.email   # 应输出“personal@example.com”
      

四、克隆/设置远程仓库时使用 Host 别名

无论 Windows 还是 Linux,克隆或修改远程 URL 时,将 github.com 替换为 github-personalgithub-work,与 ~/.ssh/config中的保持一致:

# 个人项目
git clone git@github-personal:username/repo.git# 公司项目
git clone git@github-work:   company/repo.git

如果项目已存在,可运行:

git remote set-url origin git@github-personal:username/repo.git

五、Windows 端额外说明

  • Git Bash 中按上述方法即可。

  • 如果使用 PuTTY/Pageant

    1. 将 OpenSSH 格式的私钥转换为 PPK:puttygen id_rsa_personal -o id_rsa_personal.ppk
    2. 在 Pageant 中加载对应 PPK 文件。
    3. 修改项目的远程地址同样使用 github-personal 等别名。

六、常见问题与注意事项

  1. 私钥权限过宽导致加载失败

    • 错误示例(Ubuntu):

      Permissions 0664 for '/home/user/.ssh/id_rsa' are too open.
      This private key will be ignored.
      
    • 需执行 chmod 600 ~/.ssh/id_rsa_*[2]。

  2. 配置文件路径中不要加双引号

    • IdentityFile "~/.ssh/id_rsa" 可能无法被解析,宜写作 IdentityFile ~/.ssh/id_rsa
  3. includeIf 版本兼容

    • Git ≥2.19 才支持在路径中使用 ~。若出现问题请使用绝对路径。
  4. 验证方式

    ssh -T git@github-personal   # 应返回“Hi <user>! You’ve successfully authenticated…”
    ssh -T git@github-work
    

七、参考资料

  1. Git 官方文档:git-config 中关于 includeIf 的说明(链接)
  2. CSDN 原文示例:按目录自动切换 Git 用户信息(链接)

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

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

相关文章

【V5.0 - 视觉篇】AI的“火眼金睛”:用OpenCV量化“第一眼缘”,并用SHAP验证它的“审美”

系列回顾&#xff1a; 在上一篇 《给AI装上“写轮眼”&#xff1a;用SHAP看穿模型决策的每一个细节》 中&#xff0c;我们成功地为AI装上了“透视眼镜”&#xff0c;看穿了它基于数字决策的内心世界。 但一个巨大的问题暴露了&#xff1a;它的世界里&#xff0c;还只有数字。 它…

Open3D 基于最大团(MAC)的点云粗配准

MAC 一、算法原理1、原理概述2、实现流程3、总结二、代码实现三、结果展示博客长期更新,本文最新更新时间为:2025年7月1日。 一、算法原理 1、原理概述 最大团(Maximal Cliques, MAC)法在点云配准中的应用,是近年来解决高离群值(outlier)和低重叠场景下配准问题的重要…

Science Robotics发表 | 20m/s自主飞行+避开2.5mm电线的微型无人机!

从山火搜救到灾后勘察&#xff0c;时间常常意味着生命。分秒必争的任务要求无人机在陌生狭窄环境中既要飞得快、又要飞得稳。香港大学机械工程系张富教授团队在Science Robotics(2025)发表论文“Safety-assured High-speed Navigation for MAVs”提出了微型无人机的安全高速导航…

【数据分析】如何在PyCharm中高效配置和使用SQL

PyCharm 作为 Python 开发者的首选 IDE&#xff0c;其 Professional 版本提供了强大的数据库集成功能&#xff0c;让开发者无需切换工具即可完成数据库操作。本文将手把手教你配置和使用 PyCharm 的 SQL 功能。 一、安装和配置 PyCharm 老生常谈&#xff0c;第一步自然是安装并…

OpenShift AI - 使用 NVIDIA Triton Runtime 运行模型

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.18 OpenShift AI 2.19 的环境中验证 文章目录 准备 Triton Runtime 环境添加 Triton Serving Runtime运行基于 Triton Runtime 的 Model Server 在 Triton Runtime 中运行模型准备模型运行…

物联网数据安全区块链服务

物联网数据安全区块链服务 下面是一个专为物联网数据安全设计的区块链服务实现&#xff0c;使用Python编写并封装为RESTful API。该服务确保物联网设备数据的不可篡改性、可追溯性和安全性。 import hashlib import json import time from datetime import datetime from uui…

数据集-目标检测系列- 卡车 数据集 truck >> DataBall

数据集-目标检测系列- 卡车 数据集 truck &#xff1e;&#xff1e; DataBall贵在坚持&#xff01;* 相关项目1&#xff09;数据集可视化项目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview2&#xff09;数据集训练、推理相关项目&…

vue/微信小程序/h5 实现react的boundary

ErrorBoundary react的boundary实现核心逻辑无法处理的情况包含函数详细介绍getDerivedStateFromError和componentDidCatch作用为什么分开调用 代码实现&#xff08;补充其他异常捕捉&#xff09;函数组件与useErrorBoundary&#xff08;需自定义Hook&#xff09; vue的boundar…

Day113 切换Node.js版本、多数据源配置

切换Node.js版本 1.nvm简介nvm(Node Version Manager)&#xff0c;在Windows上管理Node.js版本&#xff0c;可以在同一台电脑上轻松管理和切换多个Node.js版本 nvm下载地址&#xff1a;https://github.com/coreybutler/nvm-windows/2.配置nvm安装之后检查nvm是否已经安装好了&a…

应急响应靶机-linux2-知攻善防实验室

题目&#xff1a; 1.提交攻击者IP2.提交攻击者修改的管理员密码(明文)3.提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)4.提交Webshell连接密码5.提交数据包的flag16.提交攻击者使用的后续上传的木马文件名称7.提交攻击者隐藏…

新手前端使用Git(常用命令和规范)

发一篇文章来说一下前端在开发项目的时候常用的一些git命令 注&#xff1a;这篇文章只说最常用的&#xff0c;最下面有全面的 一&#xff1a;从git仓库拉取项目到本地 1&#xff1a;新建文件夹存放项目代码 2&#xff1a;在git上复制一下项目路径&#xff08;看那个顺眼复制…

【面试题】常用Git命令

【面试题】常用Git命令1. 常用Git命令1. 常用Git命令 1.git clone git clone https://gitee.com/Blue_Pepsi_Cola/straw.git 2.使用-v选项&#xff0c;可以参看远程主机的网址 git remote -v origin https://ccc.ddd.com/1-java/a-admin-api.git (fetch) origin https://ccc.…

Webpack构建工具

构建工具系列 Gulp构建工具Grunt构建工具Webpack构建工具Vite构建工具 Webpack构建工具 构建工具系列前言一、安装打包配置webpack安装样式加载器devtoolwebpack devtool 配置详解常见 devtool 值及适用场景选择建议性能影响注意事项 module处理流程module.rulesmodule.usemod…

重学前端002 --响应式网页设计 CSS

文章目录 css 样式特殊说明 根据在这里 Freecodecamp 实践&#xff0c;调整顺序后做的总结。 css 样式 body {background-color: red; # 跟background-image 不同时使用background-image: url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg);font-family: san…

RabbitMQ简单消息监听和确认

如何监听RabbitMQ队列 简单代码实现RabbitMQ消息监听 需要的依赖 <!--rabbitmq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>x.x.x</version>&l…

Docker学习笔记:Docker网络

本文是自己的学习笔记 1、Linux中的namespace1.1、创建namespace1.2、两个namespace互相通信2、Docker中的namespace2.1 容器中的默认Bridge3、容器的三种网络模式1、Linux中的namespace Docker中使用了虚拟网络技术&#xff0c;让各个容器的网络隔离。好像每个容器从网卡到端…

用自定义注解解决excel动态表头导出的问题

导入的excel有固定表头动态表头如何解决 自定义注解&#xff1a; import java.lang.annotation.*;/*** 自定义注解&#xff0c;用于动态生成excel表头*/ Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface FieldLabel {// 字段中文String label(…

Android-EDLA 解决 GtsMediaRouterTestCases 存在 fail

问题描述&#xff1a;[原因]R10套件新增模块&#xff0c;getRemoteDevice获取远程蓝牙设备时&#xff0c;蓝牙MAC为空 [对策]实际蓝牙MAC非空;测试时绕过处理 1.release/ebsw_skg/skg/frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManage…

双涡轮增压器结构设计cad【5张】+设计说明书

摘要 随着汽车制造商和消费者对动力性能的要求不断增加&#xff0c;发动机需要在更宽的转速范围内提供更大的功率和扭矩。双涡轮增压器可以帮助实现这一目标&#xff0c;通过在不同转速下调整涡轮的工作状态来提供更平顺的动力输出。单一涡轮增压器可能存在涡轮滞后和增压延迟…

大数据轻量化流批一体架构探索实践(一)

最近学习了解到一种轻量化&#xff0c;维护门槛较低的流批一体化的架构方式&#xff0c;虽然目前还是不太成熟&#xff0c;自己也在探索学习中。 dolphinschedulerdinkystarrocksflinkzookeper 后面我会逐步发一下这个整体架构的特点&#xff0c;以及各个组件作用&#xff0c;和…