生成多个 ssh key
一般是这样生成 ssh key 的:
1 | ssh-keygen -t rsa -C "[email protected]" |
经过多步的操作后,会在 ~/.ssh/
(linux) ,C:\Users\\username\.ssh\
(windows)下生成公钥和私钥,默认名称为:id_rsa
和id_rsa.pub
文件。
上述的操作确实可以解决使用同一个邮箱账户配置git ssh key的问题,但如果我们的机器不仅仅使用github,还需要使用到公司的gitlab呢?
一般公司都是用企业邮箱注册的 gitlab,这样使用通用邮箱生成的 ssh key 便无法通用,从而还需要再使用 ssh 生成一个关联企业邮箱的公私钥,如果使用默认的生成 key 命令,则会因为生成的 key 文件的名称不同,所以会有覆盖掉之前生成的 key 的问题或者根本不允许再次生成相同文件名的公私钥,因而导致一台机器上无法同时使用多个 key。
如何解决git配置多个 ssh key 时如何解决冲突的问题,即每次生成 key 的时候,给 key 取一个自己定义的别名,然后修改 ssh key 的配置文件即可。
step 1. 首先生成不同名称的 key 文件(公私钥)
如生成一个 github 帐号使用的 key:
1 | ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/github_id_rsa |
如生成一个 github 帐号使用的 key:
1 | ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/gitlab_id_rsa |
上述命令执行之后,在相应的目录下~/.ssh/
(linux),C:\Users\\username\.ssh\
(windows),生成了两种key。
git for windows 2.33.1 版本已使用 OpenSSH 8.8
需要使用 ed25519 算法生成 key:
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/github_id_ed25519
step 2. 给远程仓库配置添加信任 ssh key
step 3. 配置 config
我们需要在目录:~/.ssh/
(linux) ,C:\Users\\username\.ssh\
(windows),创建config文件,并且配置ssh key的路由策略:
linux 中的配置如下:
1 |
|
widows 中的配置如下:(windows下配置~/.ssh
不识别)
1 |
|
step 4. 测试 ssh key 是否通过
使用命令:
1 | ssh -T [email protected] |
测试是否配置成功。
其他配置
去除全局用户和邮箱
步骤1:如果已经设置过全局用户名和邮箱,那么要把取消掉,否则 默认使用全局配置:
1 | git config --global --unset user.name |
查看全局用户配置信息:
1 | git config --global --list |
配置全局用户和邮箱:
1 | git config user.name "woodwhales" |
步骤2:将所有生成 ssh key 执行如下命令:
1 | ssh-add -K ~/.ssh/github_id_rsa |
如果上述命令提示:
1 | Could not open a connection to your authentication agent. |
则需要先执行:
1 | eval `ssh-agent -s` |
如果提示:
1 | Enter PIN for authenticator: |
则执行如下命令:
1 | ssh-add ~/.ssh/github_id_rsa |
SourceTree 配置
步骤1:工具 - 选项
步骤2:选择”一般”选项卡,去除”默认用户信息”中的全名和电子邮件地址。
步骤3:设置”SSH客户端配置”中的SSH客户端为:OpenSSH,并将 SSH 密钥文本框清空