如何同时管理GitLab/GitHub的SSH密钥

如何同时管理多个仓库的SSH公钥(GitLab/GitHub)

开发中遇到要同时使用不同GIT仓库时(如公司的GitLab仓库和自己的GitHub仓库,或两个不同帐号的GitHub仓库),需要配置多个SSH公钥,我整理了配置流程并为不同仓库或项目配置独立的密钥与远程地址。

前置说明

  • 默认密钥目录:~/.ssh/
  • 私钥/公钥命名示例:id_rsa / id_rsa.pub(GitLab),id_rsa_github / id_rsa_github.pub(GitHub)
  • 所有命令在终端中执行;将 "你的邮箱" 替换为你的实际邮箱

一、为 GitLab 生成并配置密钥

  1. 生成 RSA 密钥:

    bash 复制代码
    ssh-keygen -t rsa -b 4096 -C "你的邮箱"
  2. 将私钥加入 ssh-agent(确保 ssh-agent 已启动):

    bash 复制代码
    ssh-add ~/.ssh/id_rsa
  3. 查看并复制公钥,去 GitLab 配置:

    bash 复制代码
    cat ~/.ssh/id_rsa.pub

二、为 GitHub 生成并配置密钥

  1. 生成 RSA 密钥:

    bash 复制代码
    ssh-keygen -t rsa -b 4096 -C "你的邮箱"
  2. 将私钥加入 ssh-agent:

    bash 复制代码
    ssh-add ~/.ssh/id_rsa_github
  3. 查看并复制公钥,去 GitHub 配置:

    bash 复制代码
    cat ~/.ssh/id_rsa_github.pub

三、配置 ~/.ssh/config

使用 SSH 配置文件为不同仓库或项目指定不同密钥。

方式一:按仓库地址配置(推荐)

当远程地址使用标准域名时,自动匹配对应密钥:

复制代码
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github
    IdentitiesOnly yes

方式二:按项目名称配置(使用 Host 别名)

为某项目使用自定义 Host 别名:

复制代码
Host github-specific
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github
    IdentitiesOnly yes

四、修改项目远程仓库地址

根据上面的两种配置方式,项目中的 origin 远程可以这样设置:

  • 按仓库地址配置(标准 SSH 地址):

    bash 复制代码
    git remote set-url origin git@github.com:用户名/项目.git
  • 按项目名称配置(使用 Host 别名):

    bash 复制代码
    git remote set-url origin github-specific:用户名/项目.git

五、远程地址修改方法

  • 在 IDE(如 IDEA)中:打开项目,菜单 GIT -> Manage Remotes 修改

  • 命令行修改:进入项目目录,执行

    bash 复制代码
    git remote set-url origin <URL>

六、其他

依次类推,如果需要增加更多的仓库,只需重复增加id_rsa_xx和修改config文件步骤即可。

相关推荐
一点一木9 分钟前
🚀 2026 年 5 月 GitHub 十大热门项目排行榜 🔥
人工智能·github·ai编程
逛逛GitHub2 小时前
GitHub 狂揽 1.3 万 Star,Anthropic 开源的知识工作者插件。
github
程序员鱼皮3 小时前
我用 GitHub 仓库养 AI 龙虾,自动开发上线项目!保姆级教程
前端·人工智能·ai·程序员·github·编程·ai编程
xiaobobo33305 小时前
vscode如何免秘钥登入Ubuntu
vscode·ssh·免秘钥登入·ubuntu虚拟机
NPE~5 小时前
[手写系列]从零到一:Github开源你的第一个项目
ai·开源·github·教程·项目实战·规范·yiqguard
似夜晓星辰5 小时前
Markdown文本编辑器Typora平替
编辑器·github
右耳朵猫AI6 小时前
Github趋势榜 2026年第20周
github
Pluchon6 小时前
萌萌技术分享笔记——Java综合项目
java·开发语言·笔记·git·github·mybatis·postman
Aubrey-J7 小时前
老版本Gitlab SSL证书自动续期错误KeyError: key not found: “token“解决
网络协议·gitlab·ssl
散峰而望7 小时前
【算法练习】算法练习精选:从 Phone numbers 到 Decrease,覆盖字符串、模拟、图论思维题
数据结构·c++·算法·贪心算法·github·动态规划·图论