环境
- MacBook Pro
- ssh key
- 平时工作常用一个github账号(已经配置),自己另有一个私人账号,现在希望在这台电脑上同时配置两个ssh key
- 工作用的多,个人用的少
步骤
- 生成 ssh key:
cd ~/.ssh
ssh-keygen -t ed25519 -C "your_email@example.com"
注意要取一个可以分辨的名字,比如id_github_personal
- 把公钥添加到个人账户
- 修改 ssh 配置文件
vi ~/.ssh/config
- 此时文件中已经有一个工作账户, 继续添加个人账户:
# Github
Host github.com
AddKeysToAgent yes
HostName github.com
UseKeychain yes
IdentityFile ~/.ssh/id_work
Host github.com-
AddKeysToAgent yes
HostName github.com
IdentityFile ~/.ssh/id_github_personal
- 注意Host必须和前面区分开,可以随便取什么名字,用最方便最好记最能区分的就可以。比如
abcxyz
也是可以的
- 把key 添加到ssh-agent:
ssh-agent -K ~/.ssh/id_giithub_personal
- 测试是否成功:
- 随便找到一个个人账户里的仓库的ssh地址, 比如
git@github.com:MyUserName/RepoName.git
- 把
github.com
替换成 abcxyz
: git@abcxyz:MyUserName/RepoName.git
git clone git@abcxyz:MyUserName/RepoName.git
- 成功克隆仓库
总结
- 由上可知,ssh配置中的 Host 只是一个名字,实际使用时会将域名替换成旗下的 HostName
- 上面把个人账户设置成了
github.com-
为了方面在克隆的时候只要复制下来多加一根下划线即可。
- 查看克隆下来的仓库url:
cat ./.git/config
, 发现其已经是 git@abcxyz:MyUserName/RepoName.git
, 如果想更改,使用git remote set-url origin git@newHost:newUserName/RepoName.git
- 此时提交任何更改并推送到远端仓库,将会使用
git config --list --global
下配置的工作账户。
- 使用
git config --local user.name 'userName'
和 git config --local user.email 'abc@email.com'
配置当前仓库使用的用户名。
- 再次把更改提交到远端仓库,这个提交就是刚刚配置的用户做的了。(此处做了个小实验, 将ssh 配置修改,AddKeysToAgent no, IdentitiesOnly yes, 并不影响工作账户也可以推送到这个个人仓库)
参考