多 Github 账户配置 SSH
引言
事情的经过是这样的:电脑之前便已经给自己的github
账号配置好了ssh
密钥,但是由于不可控原因,需要使用他人的github
账号来开发一段时间,本来克隆代码是可以选择https
和ssh
两种方式的,但是建议是使用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
连接成功会返回截图内容:
拓展
HTTPS 和 SSH 克隆的区别
GitHub
支持两种主要的协议来克隆和与远程仓库交互:HTTPS
和SSH
。可以根据自己的偏好和需求选择使用HTTPS
还是SSH
与GitHub 仓库
交互。大多数情况下,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 呢?刚好一次性总结记录一下,一劳永逸~~
转载自:https://juejin.cn/post/7274839871277301814