通过命令行生成密钥对

0.前言
密钥对,指一对密钥:由私钥和公钥组成。从加密原理上来讲,是非对称加密的一种。即由私钥加密的数据只能由公钥解密,反之公钥加密的数据只能用私钥解开。

1.工具准备
能够生成密钥对的工具程序有很多,这里要介绍的是ssh-keygen,包含在OpenSSH套件中,小巧强大,大多数系统都能运行。要得到最新版的OpenSSH,Linux/Unix系统可以通过相应的包管理工具,如apt/yum/pac;而Mac OS用户则可以借助Homebrew。

2.操作步骤
这里介绍两种算法的操作,rsa,ecdsa。国内各大云平台普遍部署rsa,但ecdsa加解密更快,国外两种都可接受。

2.1 rsa
$ ssh-keygen -t rsa -b 4096 -f whatevername
解释:-t指密钥类型,-b指密钥长度,-f后面的是你的私钥的文件名,随便取。公钥名是由程序自动生成的,即私钥名加上后缀.pub,这个例子里的私钥名whatevername,对应的公钥名自动为whatevername.pub
注意:如果你输入了密码,那是对私钥文件的加密密码,即以后每次你用到私钥都要输入这个密码。公钥不会加密也无需加密。

2.2 ecdsa
$ ssh-keygen -t ecdsa -b 256 -f whatevername

2.3 ed25519
ed25519 is the latest and possibly most secure option


$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ~/.ssh/id_ed25519.
Your public key has been saved in ~/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:2CRagUjiA1ho7Nw4SwWq7TGY5UecuI4LdL4tn6lf6eY user@localhost
The key's randomart image is:
+--[ED25519 256]--+
|=++              |
|*= = o           |
|=oB = o .        |
|.%.+   B         |
|=.O.. + S        |
|.=o + .  .        |
|o o.   o         |
|.. .o =.         |
|.  o=*oE         |
+----[SHA256]-----+

$ cat id_ed25519
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXkbdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAXCDOpo3FG1VC10/cY+/fMUdMhzVJmP4xG/5+WQajrb1rywAAAJCDYQRxg2EE
cQAAAAtzc2gtZWQyNTUxOQAAACDopo3FG1VC10/cY+/fMUdMhzVJmP4xG/5+WQajrb1ryw
AAAECgR3qNI90CofDYw0c+Wwaw5cvzL3pY7EscSERDgw7gPc6mjcUbVULXT9xj798xR0yH
NUmY/jEb/n5ZBqOtvWvLAAAAB2VAYm9nb24BAgMERQY=
-----END OPENSSH PRIVATE KEY-----

$ cat id_ed25519.pub 
ssh-ed25519 AAAAC3NzaC1lZDI1NYE5AAAAIM6mjcUbVULXT9xj798xR0yJNUmY/jEb/n5ZBqOtuWNL user@localhost

3.安全
无论公钥还是私钥都是纯文本的。
公钥是给别人的,要分发出去的,任何人都可以看,无需加密,可以经由不安全的途径传给别人或部署到云。
但是,私钥只能自己拥有,绝对不能公开,千万不要在不安全的环境传输。建议在生成密钥对的过程中输入密码以对私钥文件加密。私钥文件一旦泄漏,请立即删除密钥对!

为您推荐

发表评论

电子邮件地址不会被公开。