likes
comments
collection
share

多 Github 账户配置 SSH

作者站长头像
站长
· 阅读数 17

引言

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

过程

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

github 上添加 SSH key

创建一个 SSH key

ssh-keygen -t rsa -C "your_email@example.com"

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

继续创建 SSH key

ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa_other

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

检查 SSH key

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 账号添加配置

# 配置模板
Host 域名别名
    HostName 域名
    User git
    IdentityFile ~/.ssh/github_account1
GitHub 域名

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

多 github 账号 config 配置
  • 域名不同
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
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

# 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

ssh -T git@域名

SSH连接成功会返回截图内容: 多 Github 账户配置 SSH

拓展

HTTPS 和 SSH 克隆的区别

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

使用SSH的优势:

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

Permission denied (publickey)

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

ssh-add -l

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

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文件里面加一下

ssh-keyscan host >> ~/.ssh/known_hosts

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

结论

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