ssh-keygen教程第4章:ssh-keygen生成免密登录公私钥

直接上干货,可以先执行下面的一件配置ssh免密登录脚本试一下。


一键配置2台机器ssh免密登录脚本

centos 一键执行ssh免密码登录

wget http://66-ai.com/download/script-litte-prince/app/ssh-keygen.sh -O /root/ssh-keygen.sh && sh /root/ssh-keygen.sh

使用ssh-keygen产生认证所需的文件

ssh-keygen 可用来生成 SSH 对称认证所需的公钥和私钥文件。ssh-keygen翻译为中文是:ssh密钥key生成器

我们来执行ssh-keygen命令生成对公私钥:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

这里提示key保存的文件名,你可以录入任意一个名字,我这里录入hellodemos。然后会提醒我们录入密码,密码可以为空。

上面的提示翻译一下:

正在通过rsa加密算法生成公/私钥. 请键入你想将公/私钥保存的文件名,默认为(/root/.ssh/id_rsa)


ssh-keygen录入密码

这里的密码,可以为空。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): hellodemos
Enter passphrase (empty for no passphrase): 

Enter passphrase表示录入密码的意思,如果为空,表示没有密码。我们也录入hellodemos作为密码。

注意,密码需要录入2次


生成秘钥

录入2次秘钥后,打印出下面的提示:

Your identification has been saved in hellodemos.
Your public key has been saved in hellodemos.pub.
The key fingerprint is:
SHA256:l0zTExiZ6quLuiuyx5V/YnQ+9axAdGIvwMtZNyIc+9c root@k8s-master
The key's randomart image is:
+---[RSA 2048]----+
|      .   .=.    |
|     o o  +. .   |
|      * *.* o    |
|     . X.O = .   |
|     .+.S * E    |
|    o ..o+.      |
| . . o o.o o     |
|o o  .+ =.  o    |
|o+++..o= ...     |
+----[SHA256]-----+

我们翻译一下:

你的秘钥被保存在hellodemos中。
你的公钥被保存在hellodemos.pub中。
你的key的指纹如下:
SHA256:l0zTExiZ6quLuiuyx5V/YnQ+9axAdGIvwMtZNyIc+9c root@k8s-master
The key's randomart image is:
+---[RSA 2048]----+
|      .   .=.    |
|     o o  +. .   |
|      * *.* o    |
|     . X.O = .   |
|     .+.S * E    |
|    o ..o+.      |
| . . o o.o o     |
|o o  .+ =.  o    |
|o+++..o= ...     |
+----[SHA256]-----+

生成的结果

执行ssh-keygen后,在/root/.ssh目录中,产生如下的内容:

$ cd /root/.ssh
$ ll
total 2
-rw------- 1 root root 1766 Apr  9 09:06 hellodemos
-rw-r--r-- 1 root root  397 Apr  9 09:06 hellodemos.pub
  • hellodemos : 私钥文件,放在本地
  • hellodemos.pub : 公钥文件,需要呆会发送给服务端

ssh-keygen密钥文件格式

这2个文件是什么格式呢?我们平时的密码都是文本格式。这里的私钥和公钥也是文本文件。使用cat打印出来,看一下:

私钥hellodemos文件内容:

$ cat hellodemos
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,7E023A5B677F2AE7E165E949C9360B65

eeix7Ty87707BpNItPT97n9ekxrAUl7wJOWxU/F8I5VkvvYQ7ID/6Bs/Y6ggi9R8
VzgmfJAMWVvFsMnxaX8nNnrUxN/zKhw3eApVZnbwXHkaSmEMfS1JVERmLqDnOB2u
tmz0jjRZbY+wZQp+7IBh54v0McXEBsGUMUSKooWHYLzesagspq0oFVPQGyh8RIVt
yGpK/oBi7XqYoxHf2d10yS3Joa5yHDnkh/w9HZtk2tX7zSrbhLM35rEtguI0w+wz
fnWs8hWvHTxDwy3Dum9lgKcyqduIA7bfg4CvmNLg5K3eFPSDKJmLeU8W8nJTz4HV
d/uXduphxW/AbJoGLo//DlIEKGKmTNlYZBYHiyvWuYs+P26kTdcEusEuIQAr9n3e
gcUstjOXsovv4r0+JCRlDIyuTp7aiy9y/KVQwbsjBrUHfMYTpFQpoJFG5lXSONSS
1ccSb+NPustTmRrdEYeC4YfjoUZ7k37rwV9kzvMnrTCKMrwjvi5IttdRhrOHlaeR
fAEYKuv03fZGCJ6PTqmMwNYhQV+uE18vTpgtgAJ3rDc6chzAYnEG86EPXZ5mpSQL
XuWNI5R+Sz0MJ5HW94emwd2wKbxIvUrgKCdBhLraz/mKbsQXjyLcXdh6TIUQMdZ2
dtXJldrbTeJ2fQu7uNW0Y0yN/XDXC5cylkuXs2NLJPUNruKHgL9V4kHMeIPjsxtw
FZOBKFkFQPuJbA2NlBrx88ZSddnTGoTWKU9GzMxlOlMRx7MLjxYN8UTDRutiRik3
BNriJ7AWmiyV6YkKkT0kI+/AUSjuZVze0Sef2Rm20Pb5GmFk8Erj1oSIdDNyRXHp
cQdYLGj5/GHWTKdFqE1DciNrMNaD5q3OzYgsNYR0ycifXMR2TsE1Y6jBpwt/mhcb
8XHzEYHvcCOePQnjiXQ5xwvKkpok66eNfd/3QmSLTeqcbbs9c4b2aeG0EtNb5Bqc
JtpJVJ5JP82F0nxq3COueuTmGEKu7uxnhgowXZWkrcSaej6sFt0IuIbVJSVAB0gd
9Bn+kjT2dkRi4ldhvnldsoA0zytLDZ5yvsJFauYx7IbWZh3MHmxbrNqoTFUmOnsb
rFzNAjIb/DysXkus8LQ0ULl9+HuFeTjNbaOL+ImmFHfwhJUk3nDfkABjb7uVXWDi
krCQRNJmI3b9jsrlJq/sDU45PwwlYxWTtQA1fBUvcigmx17O7SudPlSzUWA49Yn0
r4EmQoLrSnLoCGYRfCSC8J8Ynho0FWTPWxMZLy9cc07eEZHIbpjsY85TNSRoq0IA
zqgQLuQW9IWnkj0QIvvmW3WRHGSnEHNp2T2LwL0dalgoygzBV0iDz4Drdkjr9Sod
PpPVjNOCOyPoUlQCWKqHyU04zoIb4DJp0b3L6c4H7VdjWQGukXkyPwXSEJmxLw3Y
cDCx7BKi825bpSoIp4eT85vBTabQE4JO7FzDxumekvlpJJ/4xTNcjQ3buea68bXG
za0v0WtBKiUi5s9E/iakbebAhyyKPVliJGTfhTT9pf+tnxcGcQQo2l83JJTjGNx/
B2rKC9RzsgKO9jxeukrSz8qGzSl1aj+lKm8NzolofMc/MnjsjBV6N7MQ4drHwprE
-----END RSA PRIVATE KEY-----

是不是看不懂,因为是密码,很长的密码。各位不用纠结里面是什么意思了。

hellodemos.pub文件内容:

$ cat hellodemos.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3cATYGMDNP+lS3QGOsP3hsdzHvYrjggtUTtKu0xpWF2qy9UoSMFQ9hKBb+e9oOtOO/QUzT4YpXjlKwqOXype/DOs96XX8un2Q5nBU2F/CeaLheFyBo4zOIH8BdTTYwtKdl64+UUeXb9/CaSEQkx0cqBy4O6yHZ4ZSBNZY/1hkn7ZcjdMVrSbNoenRJempWxI7HJOePGNesf8NUZFLh/Le2tWkI9ejrnB37QV4OVBhAxSygggE2uXyzb+64MQWslF7jKYsYHUx7M5ayRwqJrC3bAJU0bDdipEgLCl2VwIvnD49lAp/zBeLb1KGsotKi3keRxs5mUDjm5t8N4ngMQDx root@k8s-master

注意,这里最后一行root@k8s-master记录了本台机器的用户名,主机名,这个很重要,如果不是这个用户名和主机名登录服务器,那么免密登录会失败。为什么会失败看ssh免密登录原理


小结

本节,我们已经学习了ssh-keygen生成密钥的方法,按照上面的步骤,你应该10分钟能搞定本章的内容,如果不尽兴,我们可以继续深入学习一下ssh-keygen的详细用法,做到庖丁解牛,哈哈。