針對同一臺電腦,為使用不同 SSH Key 的不同用戶分別設置 Git 遠程倉庫憑據的操作指南

一、準備工作

  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;和…