多 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 呢?刚好一次性总结记录一下,一劳永逸~~

相关推荐
Determined_man4 小时前
本地idea项目push到GitHub失败
github
再会呀4 小时前
[Ai Agent] 04 一文吃透LangChain:Prompt、LLM、Chain、Memory 全流程实战
github
三体世界5 小时前
Qt从入门到放弃学习之路(1)
开发语言·c++·git·qt·学习·前端框架·编辑器
绝无仅有6 小时前
某短视频大厂的真实面试解析与总结(一)
后端·面试·github
绝无仅有6 小时前
腾讯MySQL面试深度解析:索引、事务与高可用实践 (二)
后端·面试·github
汤面不加鱼丸6 小时前
git常用指令
git
秦jh_18 小时前
【git】基本操作
git
徐同保19 小时前
Arguments: ls-remote --tags --heads git://github.com/adobe-webplatform/eve.git
git·adobe·github
CoderJia程序员甲19 小时前
GitHub 热榜项目 - 日榜(2025-10-27)
ai·开源·大模型·github·ai教程
北塔软件20 小时前
各品牌服务器IPMI配置实战经验分享
服务器·git·github