写在前面的话
因为工作的时候为了访问速度快,我把很多仓库都迁移到了码云。但是呢,个人的一些东西还是保留在了 GitHub 了。这样就存在一个不得不解决的问题,就是两个平台的注册时使用的邮箱不同,用户名也不同。
之前都是每次 push 的时候输入账号和密码来解决这个问题的,但是这样实在是太麻烦了。于是,求助了一下万能的百度(其实更喜欢用 Google),就有了这篇文章。
本地生成不同的 SSH-Key
这一步主要是通过下面这个命令,针对不同的平台生成不同的 SSH-Key:
ssh-keygen -t rsa -C email -f ~/.ssh/id_rsa
需要说明的是:
email:指的是你在对应平台注册时所使用的邮箱地址。id_rsa:指的是你在本地生成 SSH-Key 文件的名称。可以针对不同的平台命名不同的名称,比如针对码云可以命名为gitee_id_rsa。
接下来,我们就可以通过上面的命令来分别生成不同平台的 SSH-Key,我这儿提供码云和 GitHub 平台:
-
码云平台的 SSH-Key:
ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa -
Github 平台的 SSH-Key:
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
在执行上面的命令之后(回车之后),你应该能看到这样的提示:
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
这里是提示你配置生成的 SSH-Key 存储的路径和名称。
- 如果不输入任何内容的话,则会读取默认的路径和名称。文件名称就是你执行上面命令的
gitee_id_rsa或者github_id_rsa。 - 也可以输入你想存储的路径和名称,例如
/Users/{username}/.ssh/id_rsa
你也可能看不到上面的提示(我在执行的时候就没看到):
Generating public/private rsa key pair.
然后你可能会看到另一个提示:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
这里是提示你配置生成的 SSH-Key 的口令和确定口令,我们直接默认即可(就是回车)。
如果接下来你看到了类似下面这种提示,就说明生成 SSH-Key 成功了:
Your identification has been saved in /Users/{username}/.ssh/id_rsa_oschina.
Your public key has been saved in /Users/{username}/.ssh/id_rsa_oschina.pub.
The key fingerprint is:
SHA256:lEmncZqtuXuHgZ4XtkVMkazLaTC5XgN0VLjYi3T8Fk8 xxx@xxx.com
The key s randomart image is:
+---[RSA 2048]----+
| o o..=+o |
| . @. + o X|
| B..B o |
| . oB B . E|
| So X = + |
| ..* X o .|
| ..+ O o |
| o.* . |
| .o . |
+----[SHA256]-----+
成功地生成了 SSH-Key 之后,我们需要将它添加到本地:
ssh-add ~/.ssh/gitee_id_rsa
执行完上面的命令之后,如果成功的话可以看到下面这样的提示内容:
Identity added: /Users/king/.ssh/github_id_rsa (xxxxxx@qq.com)
最后可以通过下面的命令查看已经添加到本地的 SSH-Key:
ssh-add -l
这样,你会看到所有已经添加到本地的 SSH-Key:
3072 SHA256:STeIkkZVIZwhmM0eAPI2inMl/EmV1Mhj0twxr4Qcx/U xxxxxx@qq.com (RSA)
3072 SHA256:9MNFPZA7mFblCBjsRUIk3b8TznxHUroroAryI/Q80Pg xxxxxx@qq.com (RSA)
到这里,恭喜你!因为你已经成功了在本地生成了针对不同平台的 SSH-Key 了。
本地 SSH-Key 配置
我们完成了第一步之后,接下来才是重中之重呢!就是要在对应的 .ssh 目录中创建一个 config 文件,来针对不同平台进行配置。
-
首先,我们通过终端进入
.ssh目录cd ~/.ssh -
然后,再通过终端创建
config文件touch config -
最后,在
config文件中输入下面这些内容# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa这里需要说明的是:
Host和HostName配置的是 Git 平台的域名PreferredAuthentications配置的是公钥还是私钥,publickey表示公钥,privatekey表示私钥。IdentityFile配置的是本地生成的 SSH-Key 文件的路径和名称。
最后保存 config 文件即可,这样我们就完成了本地的所有工作。
配置 Git 平台的 SSH 公钥
完成了本地生成 SSH-Key 的所有工作之后,我们就需要访问不同的 Git 平台来根据本地生成的 SSH-Key 来配置 SSH 公钥了。
码云平台
首先,我们访问并登陆到码云平台。

然后,点击右上角的头像,在弹出的菜单中选择【设置】。

在左边的菜单中,找到【安全设置】中的【SSH公钥】菜单,并且打开。

在上面的页面中的【添加公钥】中配置我们在本地生成的 SSH-Key 信息就可以了。
- 标题:这个就是你当前配置的 SSH-Key 的名称,可以随意进行填写,只要是不重复就可以了。
- 公钥:这个就是你在本地生成 SSH-Key 文件的内容,一般就是
.ssh目录中的gitee_id_rsa.pub文件。
最后,点击保存即可。
GitHub 平台
首先,我们访问并登陆到 GitHub 平台。

然后,点击右上角的头像,在弹出的菜单中选择【Setting】。

在左边的菜单中,找到【SSH and GPG keys】菜单,并且打开。

在【SSH keys】一栏的右上角,点击【New SSH key】菜单,新增一个 SSH-Key。

在上面的页面中的【Add new】中配置我们在本地生成的 SSH-Key 信息就可以了。
- Title:这个就是你当前配置的 SSH-Key 的名称,可以随意进行填写,只要是不重复就可以了。
- Key:这个就是你在本地生成 SSH-Key 文件的内容,一般就是
.ssh目录中的gitee_id_rsa.pub文件。
最后,点击保存即可。
最后的验证
完成了上面所有的步骤,实际上我们已经完成了本地多个 Git 账户信息的配置。但是,到目前为止我们还不知道我们的配置到底有效。所以,我们的最后一步就是来验证一下我们这么多的工作是否是有效的。
我们只需要通过下面的命令来进行验证就可以了:
ssh -T git@example.com
这里的 example.com 指的是 Git 平台的域名。
-
码云平台:
ssh -T git@gitee.com -
GitHub 平台:
ssh -T git@github.com
在执行上面的命令之后,如果你看到下面这样的提示就说明配置已经成功了。
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
这里的 username 是你在对应 Git 平台的用户名。
这篇文章仅在 Mac 系统中进行了验证,Windows 系统可能会存在差异,目前还没实际操作过呢!
3041



被折叠的 条评论
为什么被折叠?



