同个电脑多个 SSH Key 的配置使用

多平台代码仓库,多账号免密登录

很多时候我们用的代码管理平台有很多,通常我们都会使用不止一个平台账号的。比如我比较喜欢 Github 的开源功能,但是它的私有项目是收费的,所以我也用开源中国的 Git Oschina 的平台 ( 因为它的 private 项目是免费的!)。但是,由于我们生成的公钥和私钥只有一份,也就是当前用户目录的 .ssh 文件夹下,如果多平台多账号,生成的时候就会覆盖掉了,那该如何设置多平台账号的公钥和私钥不会相互覆盖同时还能够自动解析免密访问?

本文就介绍用两个不同平台的 Git 账号来实现,同时免密登录。两个平台分别为 Github 和开源中国的 GitSschina 的。详细步骤如下。

生成 SSH Key

生成 ssh key 的命令我想大家都应该懂:

1
ssh-keygen -t rsa -C "youremail@email.com"

当我们回车时,我想有的人是直接三个回车的吧,当然三个回车是没有问题的,但是我们要了解这三个回车是什么意思。

第一个回车

1
Enter file in which to save the key </c/Users/JIYI/.ssh/id_rsa>

此处的回车代表将密钥默认存储在 C盘/Users/用户名/.ssh 的文件夹下

第二个回车第三个回车

1
2
Enter passphrase<empty for no passphrase>:
Enter same passphrase again:

这个是为了设置提交项目的密码,为了避免其他人用你的电脑修改你的项目时提交的,通常直接回车,就代表不需要密码,我也建议这样做,可以避免多次输入密码,省时省力。

多账号密钥生成

因为有两个账号,如果生成密钥时都是三个回车则后执行的会替换先执行的。既然第一个回车的意思是保存地址,那我们就不能直接回车了,而是输入保存地址就可以了。

步骤如下:

1. 正常生成第一个密钥

1
ssh-keygen -t rsa -C "mygitoschina@qq.com"

连续三个回车,将 Oschina 的密钥默认保存

2. 生成第二个密钥

先打开 C盘/Users/用户名/.ssh 目录,在里面新建 github 文件夹

1
ssh-keygen -t rsa -C "mygithub@gmail.com"

出现 Enter file in which to save the key 时输入

1
/c/Users/用户名/.ssh/github/id_rsa

也就是将密钥保存在 github 文件夹下

这样生成密钥完成

创建 config 文件

C盘/Users/用户名/.ssh 目录下新建 config 文件,该文件没有后缀名的,这是为了配置映射功能的,在里面填入下面代码:

1
2
3
4
5
#github的配置
Host github.com
HostName github.com
IdentityFile ~/.ssh/github/id_rsa
User git

主要是 HostNameIdentityFile 要改,HostName 是服务器域名,IdentityFile 就是密钥的地址了。上面设置,就是刚刚我们新建 github 下的生成密钥,那个 ~ 符号代表当前目录,windows 下默认就是 C盘/Users/用户名,所以再加上后面的地址就是我们上面所写的 C盘/Users/用户名/.ssh/github/id_rsa.

当然这里面也可以写多个配置的

1
2
3
4
5
6
7
8
9
10
#github配置
Host github.com
HostName github.com
IdentityFile ~/.ssh/github/id_rsa
User git
#gitoschina的配置
Host git.oschina.net
HostName git.oschina.net
IdentityFile ~/.ssh/id_rsa
User git

测试

测试 Github

1
ssh -t git@github.com

返回成功信息:

1
Hi youname! You've successfully authenticated, but Github does not provide shell access.

当然有的时候会问你是否授权连接,选 y 即可。

测试开源中国的 GitOschina:

1
ssh -T git@git.oschina.net

返回成功信息为:

1
Welcome to Git@OSC, yourname!

这样在项目中就可以用多个 Git 平台的 ssh 了。

赞赏一下
0%