Git高级之配置多个SSH key
最近我们在代码托管平台上使用 SSH 的方式下拉代码,通常是用一个 ssh key 来拉取所有托管平台的代码,如码云,GitHub、GitLab 等,但是总用一个不是太好。会有安全风险,这就需要为每个托管平台设置单独的 SSH-key
下面我们下简单介绍一下如何创建多个 SSH Key 并且使用下拉代码。
第一步、生成 SSH-Key
Windows
建议使用 Git bash
操作
Linux、mac
用户使用默认终端
即可
生成第一个 SSH-Key
1 | ssh-keygen -t rsa -C "你的邮箱" -f ~/.ssh/id_rsa_one |
生成第二个 SSH-Key
1 | ssh-keygen -t rsa -C "你的邮箱" -f ~/.ssh/id_rsa_two |
创建完成之后 我们在.ssh 的根目录下可以看到文件
WindowsSSH 目录
C:\Users\Administrator\.ssh
Linux、macSSH 目录
直接cd ~/.ssh
即可进入
此时,.ssh
目录下应该有 4 个文件:id_rsa_one
和id_rsa_one.pub
,id_rsa_two
和id_rsa_two.pub
第二步、添加私钥
在终端中执行
1 | ssh-add ~/.ssh/id_rsa_one |
如果执行 ssh-add 时提示 Could not open a connection to your authentication agent
可以先执行命令:
1 | ssh-agent bash |
然后再重新运行 ssh-add
命令即可
添加成功会出现提示:
Identity added
等字样
第三步、查看私钥列表是否存在
1 | ssh-add -l |
当我们可以看到 2 条私钥的时候就证明安装成功了,别急还没有完
第四步、修改配置文件 config
若.ssh 目录(就是私钥所在的文件夹)下无 config 文件,那么创建
1 | touch config |
打开 config 文件 配置如下格式 这里要注意 IdentityFile 后面对应的是 本地 ssh key 文件路径
1 | # gitee |
第五步、用 ssh 命令测试验证
1 | ssh -T git@gitee.com |
验证通过后即可愉快的 clone 代码了
附:清空私钥列表
1 | ssh-add -D |
第六步、配置项目使用的 ssh-key
如果项目使用的 ssh-key 不同, 我们不能重复设置
git config --global
,这时我们只需要去掉--global
修饰符,只为当前项目添加 git 配置就可以了
注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和 Email 地址。
一般情况下为所有项目全局设置默认的用户名和邮箱
1 | git config --global user.name "xxx" |
git 为不同的项目设置不同的用户名和邮箱
找到项目所在目录下的 .git/文件夹,进入.git/文件夹,然后执行如下命令分别设置用户名和邮箱
1 | git config user.name "xxx" |
1 | git config user.email "xxx@xx.com" |
然后执行命令查看 config 文件:cat config
发现里面多了刚才配置的用户名和邮箱信息,即成功为该项目单独设置了用户名和邮箱
1 | [core] |
如果 git pull 每次都要求输入用户名和密码,则可以执行如下配置
1 | git config --global credential.helper store |
执行后, cat config 查看,则多了下面的内容:
1 | [credential] |
1 | [user] |