多个 SSH keys 的配置,方便 Git 对不同仓库的使用与管理

用户头像
与光
关注
发布于: 2020 年 05 月 13 日
多个 SSH keys 的配置,方便 Git 对不同仓库的使用与管理

在搬砖的过程中,或多或少都会与不同的代码托管平台打交道。比如我就喜欢用 gitee(码云) 作为 md 笔记中的图床,github 作为个人项目的代码管理仓库。而公司又会使用其它的托管平台来管理,比如阿里云等。



单个 SSH keys 在使用并生效后,再配置其它平台就会造成失效等各种问题。看了各个仓库的 SSH keys 生成教程,基本只有单个 SSH keys 的生成。在我们想要对多个代码托管平台上的项目同时操作的时候,帮助不大。



在配置多个 SSH keys 的过程中,我把配置的过程与碰见的一些问题,记录在该文章内,希望能给各位提供些许帮助。

1.生成各平台指定的 SSH-Keys

打开 git Bash Here,输入命令,修改邮箱后一路回车。如需要设置密码的话可以额外自行配置。



-t : “是指定秘钥的类型”



-C :“是指定用于识别密钥的注释,即可以填写任意值,一般都填邮箱”



// 先生成一个默认的 id_rsa,不生成可能会导致别名的配置 keys 不生效

$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa

// 再依次指定别名,生成其他给平台用的 ssh_key 文件

$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/github_rsa
$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/gitee_rsa
$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/aliyun_rsa



此时,系统盘用户名下的用户 .ssh 目录下应该有 8 个文件:id_rsa 和 id_rsa.pub,github_rsa 和 github_rsa.pub,gitee_rsa 和 gitee_rsa.pub,aliyun_rsa 和 aliyun_rsa.pub。





可能会出现的错误:

  1. 生成的公钥文件(.pub)未在 .ssh 文件夹内,或者生成文件的位置不对,请检查控制台当下的路径与生成的路径。

  2. 有些控制台可能识别不了 “ ~ ” , 修改添加的路径直接用 “ ./ ” 操作

2.配置公钥

将它们的公钥文件(.pub)内部的所有内容复制黏贴到对应的代码托管仓库上。



以 github 为例,如图所示:





将对应平台的公钥添加至 Key 框内。Title 可随意填,具有标识性即可。



最后点击 Add SSH key 保存即可。

3.配置私钥

// 先执行命令:

ssh-agent bash

// 再添加私钥

$ ssh-add ~/.ssh/github_rsa
$ ssh-add ~/.ssh/gitee_rsa
$ ssh-add ~/.ssh/aliyun_rsa

// 添加成功如下图所示。

ssh-add 一些命令参数如下:

-D:删除 ssh-agent 中的所有密钥.
-d:从 ssh-agent 中的删除密钥
-L:显示 ssh-agent 中的公钥
-l:显示 ssh-agent 中的私钥



添加私钥,并通过命令 ssh-add -l 来查看当前配置成功的私钥列表,如图中所示:



ssh-add -l





可能会出现的错误:

  1. ssh-agent bash 提示错误信息:unable to start ssh-agent service, error :1058

解决:管理员权限打开 Power Shell,执行:

Set-Service -Name ssh-agent -StartupType automatic



  1. 添加私钥提示错误信息:No such file or directory

解决:检查当前控制台路径与添加的路径是否匹配,调整路径即可,如上图所示。

4.新增 config 配置文件

若系统盘用户名下的 .ssh 目录下无 config 文件,那么新建一个 config 文件。该文件没有文件后缀名,类型显示为文件,双击后可用记事本等打开进行编辑。



我的配置文件如下,可参考配置文件参数说明:

# 配置文件参数
# Host : 配置对应的的主机名和 ssh 文件(可以直接填写 ip 地址)
# HostName : 要登录主机的主机名(建议与 Host 一致)
# PreferredAuthentications :配置登录的验证方式(含密码可自行查询配置方式)
# IdentityFile : 指明上面 User 对应的配置路径
# User : 登录名(如 github 的 username)
# Port: 端口号(默认 22)

# github.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:/Users/tag_a12/.ssh/github_rsa
User your_email@example.com

# aliyun.com
Host code.aliyun.com
HostName code.aliyun.com
PreferredAuthentications publickey
IdentityFile C:/Users/tag_a12/.ssh/aliyun_rsa
User your_email@example.com

5.测试 SSH 链接

// 命令语句

$ ssh -T git@[Host 配置名]

// 使用如下:

$ ssh -T git@github.com
$ ssh -T git@code.aliyun.com

成功提示:

Welcome to GIT,your name!



也可以直接进行项目的克隆或提交进行测试。

我的建议是,在配置完成后,对各个平台都进行一次链接测试。



可能会出现的错误:

  1. 提交代码时,提示 Host key verification failed。

原因:若你的项目先克隆到了本地,再修改 SSH keys 后,在提交的时候由于公钥不一样了,所以无法登录。

解决:只需要进行一次链接测试便可解决。



以上就是多个 SSH-Keys 的配置过程,如果在配置过程中还发现有其它问题或者还有看不懂的地方,欢迎留言讨论。

发布于: 2020 年 05 月 13 日 阅读数: 89
用户头像

与光

关注

学而思其行,要有光。 2019.12.02 加入

2年前端程序员

评论

发布
暂无评论
多个 SSH keys 的配置,方便 Git 对不同仓库的使用与管理