今天整理自己的托管平台时,发现很多个平台共用同一个密钥,即默认的 id_rsa,考虑到风险性,想到使用不同密钥,登录不同平台/服务器,做好隔离。
什么是公钥什么是私钥?
公钥就好比一把锁,你在一个平台放上你的公钥,就相当于你自己买了把锁在该平台把你的东西锁起来了。私钥好比开锁的钥匙 你在平台上的锁,只有你的私钥这把钥匙才能打开,平台其他人都打不开。
公钥可以给任何人,但是私钥只能自己拿着!!
一、创建默认ssh密钥
一般,我们的密钥存放在 ~/.ssh 目录下,以下以 MacOs示例
1.进入.ssh文件
$ cd ~/.ssh
2.查看已有 密钥
$ ls
3.创建默认密钥 id_rsa
(如果上一步 ls后没内容,接着看,如果已有 id_rsa 密钥,跳过这一步,到第4步)
$ ssh-keygen -t rsa
输入上述命令后,一路回车就好,创建完成之后,再次 ls,即可看到新增加了 id_rsa 和 id_rsa.pub 两个文件,这也就是 默认密钥
二、创建自定义名称密钥
有了默认密钥,还不够用,想再创建几个自己命名的密钥,怎么办?
4.自定义名称密钥
$ ssh-keygen -t rsa -C “your email” -f id_rsa_xx
注:
“your email” 替换成你自己的邮箱;
-f 后边“id_rsa_xx” 中的 xxx 就可以自定命名,用来区分啦
例如:我想创建一个在 centOs中使用的密钥,我可以:
$ ssh-keygen -t rsa -C “your email” -f id_rsa_centos
一路回车之后,就会新建 id_rsa_centos.pub 和 id_rsa_centos 两个文件;
三、配置不同平台使用不同密钥
前边咱们已经创建了多组密钥,需要做一个配置文件,用来管理 哪组密钥 应用在哪个平台,这个配置文件就是 ~/.ssh/config
5.创建 config文件
如果 ~/.ssh 目录下 没有 config文件,可用如下命令自行创建一个
$ touch config
6.配置 config 文件
通过 vi 编辑 config文件:
$ vi config
config 内容可以如下配置:
# 设置不同密钥,访问不同服务器
# centOs服务器
Host xxx.xxxx.xxx.xxx. # 服务器外网ip,如 11.111.11.11
User username # username 是要使用的登录名,如root
IdentityFile ~/.ssh/密钥名 # 不同密钥名,如上边创建的id_rsa_centos:~/.ssh/id_rsa_centos
四、平台端配置
7.将不同密钥的 公钥,就是以 “.pub” 结尾的文件(如id_rsa.pub)放到对应平台的ssh公钥设置的地方,就能对应生效啦。