多 Github 账户配置 SSH

引言

事情的经过是这样的:电脑之前便已经给自己的github账号配置好了ssh密钥,但是由于不可控原因,需要使用他人的github账号来开发一段时间,本来克隆代码是可以选择httpsssh两种方式的,但是建议是使用ssh的方式来拉代码,总之,就遇到了要在自己电脑上给多个 github 账户配置ssh的问题

过程

在实现多 github 账户配置SSH的需求时,我先去回顾了一下如何在github上添加SSH key,然后再去解决当在多个 github 账户上添加了SSH key后,然后再思考如何实现将GitHub账号的域名与密钥匹配

github 上添加 SSH key

创建一个 SSH key

bash 复制代码
ssh-keygen -t rsa -C "your_email@example.com"

默认生成的ssh密钥路径~/.ssh/id_rsa

继续创建 SSH key

bash 复制代码
ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa_other

-f命令为可选,若不写,在执行代码后也会让输入文件名

检查 SSH key

bash 复制代码
cd ~/.ssh
ls

在 github 上添加 SSH key

  • 首先,cat ~/.ssh/id_rsa.pub打印出公钥信息,然后进行复制
  • 然后登录github账号,进入设置页
  • 最后点击菜单栏的SSH and GPG keys进入页面添加SSH key,标题名随意取,Key的内容就是复制的公钥

SSH config 配置

打开SSH 配置文件 (~/.ssh/config) 并为每个GitHub 账号添加配置

bash 复制代码
# 配置模板
Host 域名别名
    HostName 域名
    User git
    IdentityFile ~/.ssh/github_account1
GitHub 域名

GitHub 仓库的域名通常是github.com,但在某些情况下,特别是对于组织(Organizations)GitHub Pages网站,可以自定义域名

多 github 账号 config 配置
  • 域名不同
javascript 复制代码
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa
    
Host xxx.com
    HostName xxx.com
    User git
    IdentityFile ~/.ssh/id_rsa_xxx
  • 域名相同,都为github.com
javascript 复制代码
Host github.com-account1
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_account1
    
Host github.com-account2
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_account2

相同域名时,别名和域名会不一样。当要克隆或访问GitHub 仓库时,应使用配置的别名作为主机名,而不是默认的 github.com

bash 复制代码
# github.com-account1、github.com-account2 替换 github.com
git clone git@github.com-account1:username/repo1.git
git clone git@github.com-account2:username/repo2.git

测试 SSH key

bash 复制代码
ssh -T git@域名

SSH连接成功会返回截图内容:

拓展

HTTPS 和 SSH 克隆的区别

GitHub支持两种主要的协议来克隆和与远程仓库交互:HTTPSSSH。可以根据自己的偏好和需求选择使用HTTPS还是SSHGitHub 仓库交互。大多数情况下,HTTPS足够用了

使用SSH的优势:

  • 更安全,因为使用密钥对进行身份验证
  • 验证更方便,一旦配置好SSH 密钥对,就无需每次都输入密码

Permission denied (publickey)

确认密钥是否都已经添加到SSH 代理,使用以下命令列出代理中的密钥:

bash 复制代码
ssh-add -l

如果密钥不在列表中,使用ssh-add命令将其添加到代理:

bash 复制代码
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/is_rsa_xxx

Host key verification failed

在使用ssh -T git@域名测试SSH连接时一直会提示:Host key verification failed,看了保错提示是由于连接的host不在已知主机列表~/.ssh/known_hosts)中,因此需要手动的在known_hosts文件里面加一下

bash 复制代码
ssh-keyscan host >> ~/.ssh/known_hosts

运行上面的命令后再执行ssh -T git@域名测试连接就不会报错了~

结论

多个 github 账户配置SSH的情况虽然之前没有遇到,但是既然遇到了还是得好好记录一下,这次的问题是不同 github 账号不同域名配置 SSH ,要是下次又遇到不同 github 账号相同域名配置 SSH 呢?刚好一次性总结记录一下,一劳永逸~~

相关推荐
CoderJia程序员甲1 小时前
GitHub 热榜项目 - 日榜(2025-09-13)
ai·开源·大模型·github·ai教程
nightunderblackcat2 小时前
新手向:Git下载全攻略
git
逛逛GitHub3 小时前
1 个神级智能问数工具,刚开源就 1500 Star 了。
sql·github
梦想CAD控件4 小时前
(在线CAD平台)网页集成CAD SDK的方法
前端·javascript·github
若无_6 小时前
了解 .husky:前端项目中的 Git Hooks 工具
前端·git
想当花匠的小码农6 小时前
Git 仓库“减肥”指南:从检测、清理到同步的全流程实践
git
杨杨杨大侠7 小时前
Atlas Mapper 教程系列 (4/10):高级映射技巧与类型转换
java·开源·github
杨杨杨大侠7 小时前
Atlas Mapper 教程系列 (3/10):核心注解详解与基础映射
java·开源·github
杨杨杨大侠7 小时前
Atlas Log 0.2.0 版本
java·github·apache log4j
绝无仅有8 小时前
大厂Redis高级面试题与答案
后端·面试·github