一台电脑, 多个github帐号的SSH key切换, 更新多个hexo博客
github账号,工作有一个,自己有一个。但是默认下使用ssh key在git push时只有默认账号能免输入账号和密码。
- 如果你建立并配置了.ssh/config文件后, 但却不知道怎么使用。这篇文章是为你准备的。
1. 打开终端,进入ssh根目录下
cd ~/.ssh/
2.创建新的 私钥/公钥, 并指定秘钥名称, 如 kentsun_rsa
- 使用一下命令行, 然后两次回车即可.
ssh-keygen -t rsa -f ~/.ssh/随便名字_id_rsa -C "yourmail@xxx.com"
- 或者使用下面命令行创建秘钥, 需要三次回车, 但是第一次回车需要输入秘钥名字.
ssh-keygen -t rsa -C "yourmail@xxx.com"
- 注意:这次创建新的秘钥 ,不要再三次回车了, 要在第一次回车的地方,填入新秘钥名字, 如果不填将使用默认的id_rsa , 会将原来的ssh_key覆盖. 新秘钥名后面建议加
_rsa
或者id_rsa
.
3.配置config
如果 ~/.ssh/
根路径下, 没有config, 则创建一个config文件
touch config
- config配置如下, 第一个为原来的ssh key配置, kentsun为新的ssh key配置
#第一个账号,默认使用的账号
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# 第二个账号 kentsun
Host kentsun.github.com # kentsun为前缀名,可以任意设置
HostName github.com
User git
IdentityFile ~/.ssh/kentsun_rsa
- 我们指定 kentsun.github.com 这个"作用域"下的ssh连接统一指向 github.com ,并且使用之前生成好的 github_rsa 这个密钥加密。
- 默认的使用 ~/.ssh/id_rsa 这个密钥加密
原理分析:
- 1.ssh 客户端是通过类似 git@github.com:githubUserName/repName.git 的地址来识别使用本地的哪个私钥的,
地址中的 User 是@前面的git, Host 是@后面的github.com。 - 2.如果所有账号的 User 和 Host 都为 git 和 github.com,那么就只能使用一个私钥。
所以要对User 和 Host 进行配置,让每个账号使用自己的 Host,每个 Host 的域名做 CNAME 解析到 github.com,
如上面配置中的Host kentsun.github.com。 - 3.配置了别名之后,新的地址就是git@kentsun.github.com:githubUserName/repName.git。
这样 ssh 在连接时就可以区别不同的账号了。
4.设置新github账户SSH key
最终会生成一个文件在用户目录下,打开用户目录,找到.ssh\kentsun_rsa.pub文件,记事本打开并复制里面的内容,打开你的github主页,进入个人设置 -> SSH and GPG keys -> New SSH key:
将刚复制的内容粘贴到key那里,title随便填,保存。
5.在.ssh根目录下, 清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中
cd ~/.ssh
ssh-add -D
ssh-add id_rsa
ssh-add id_rsa_second
- 最后确认一下新秘钥已经添加成功
ssh-add -l
6.输入指令, 验证配置是否成功
- 默认ssh_key验证
ssh -T git@github.com
- 新ssh_key验证, 新秘钥名替换username
ssh -T git@username.github.com
- 如下提示信息, 则配置成功
$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
7.进入各自项目文件夹,单独设置用户名/邮箱
- 注意:如果有多个账号,建议使用局部的。
# 取消全局 用户名/邮箱 配置
git config –global –unset user.name
git config –global –unset user.email
# 单独设置每个repo 用户名/邮箱
git config user.name "用户名" //在config后加上--global即全局
git config user.email "邮箱"
- 查看设置是否成功
git config --list
8.最后在 hexo 配置文件修改git地址
deploy:
type: git
repository: git@username.github.com:githubUserName/githubUserName.github.io.git
branch: master
- repo配置相当于在原来 git仓库地址中添加了Host名字 kentsun, 其他不变.
可参考我的:
deploy:
type: git
repo: git@kentsun.github.com:KentSun/KentSun.github.io.git
branch: master
配置多个git账户重复以上步骤。
修改remote 作用域
+ 最后修改一下我们在 kentsun 克隆下来的项目的 remote “作用域” 。
$ git remote rm origin
$ git remote add origin git@kentsun.github.com:kentsun/123.git // 注意是 kentsun.github.com
$ git push origin master
Everything up-to-date