配置一个SSH Key
生成ssh公私钥(默认就是2048字节, 邮箱也可以不加,邮箱是作为title存在, 所以可以配置个有标识性的名称之类的):
ssh-keygen -t rsa -C "yourEmailAddr" -b 2048
如果ssh密码没有配置在默认路径, 需要按照如下步骤进行配置
启动ssh-agent:
eval ssh-agent -s
添加私钥到agent【ssh-add "私钥文件地址"
】 如:ssh-add "c:/Users/xxx/.ssh/id_rsa"
- 第二步提示:
Could not open a connection to your authentication agent
,执行ssh-agent bash
- 第二步提示:
将公钥添加到远端库ssh管理处
(github/gitee/gitlab)
clone 代码:
git clone git@xxx.git
配置多个SSH Key
场景描述
开发人员通常只会生成一个SSH Key,名字叫id_rsa,然后提交到多个不同的网站(如:GitHub、CodeArts或Gitlab)。
但是也存在另一种需要,在同一个网站上,注册了两个用户名,通常网站不会允许为这两个用户名,配置同一个SSH Key,这时候就会有些麻烦。
操作步骤
在本地Git仓库生成两个不同的SSH Key
1 | ssh-keygen -t rsa -C "email" |
说明:
这里是关键,如果要生成2个Key,分别对应github和gitlab,这里写成:id_rsa_gitlab和id_rsa_github。这样,就生成了2个证书。如下

用不同的帐号,上传两个不同的证书
读取
*.pub
的内容,粘贴到服务网站上。记住对应的用户名。
编辑**~/.ssh/config
**文件
1 | gitlab |
要点在于Host与HostName的区别:
- HostName:是填写真实的服务地址。
- Host:是填写别名,后面会用上。
- IdentityFile:填写的是证书的所在位置,你也可以把证书保存在任何地方。
测试
1 | $ ssh -T git@gitlab |
操作
原本在Web页面上复制的SSH URL,可以直接使用,例如:
1 | git@*****.com:name/repo.git |
但是,现在根据你的帐号不同,需要自行替换【gitlab / github】:
1 | git@github.com:name/repo.git 或 git@gitlab:name/repo.git |
补充
如果之前有设置全局用户名和邮箱的话,需要unset一下
1 | git config --global --unset user.name |
然后在不同的仓库下设置局部的用户名和邮箱
比如在公司的repository下git config user.name "yourname"
、git config user.email "youremail"
在自己的github的仓库在执行刚刚的命令一遍即可。
这样就可以在不同的仓库,以不同的账号登录
将ssh-key添加到ssh-agent
需要将新的 ssh-key 添加到ssh agent ,因为默认只读 id_rsa
1 | ssh-add -K ~/.ssh/id_rsa_xxx |
针对mac可能会存在
电脑重启后,ssh失效的情况
,重启后还要让它有效
1 | # mac可将指令写入到~/.zshrc |
查看已添加到ssh_agent的ssh key
1 | ssh-add -l |