ssh-keygen命令创建秘钥对,ssh-copy-id命令将公钥拷贝到对象服务器

Ansible需要ssh登录到对象服务器进行部署,一般使用公钥和私钥,在这里介绍使用ssh-keygen创建公钥及私钥,并把公钥注册到对象服务器的方法。

ssh-keygen命令创建公钥和私钥

在Linux上创建私钥和公钥对,使用 ssh-keygen 命令。选项 -t 可指定 加密方式,-b选项指定bits数。

[root@sys-blog ~]# [root@sys-blog ~]# ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <Enter>
Enter passphrase (empty for no passphrase): <Enter>
Enter same passphrase again: <Enter>
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:JsBnUo33QJj/mfpRSwM/ymSoq2+i13HEMGu2vJTZkyg root@sys-blog
The key's randomart image is:
+---[RSA 2048]----+
|      .*.        |
|   . .* +        |
|    + oB o.      |
|     =+ +..o     |
|     +.BSooo*    |
|    E O+=+++ +   |
|     +.+ o+ .    |
|    o +..  .     |
|  .o.=o  ..      |

执行ssh-keygen命令后,会在/.ssh/ 目录下创建 id_rsa 和 id_rsa.pub 文件。

[root@sys-blog .ssh]# ll
total 12
-rw-------. 1 root root 1823 Aug  3 07:51 id_rsa      <- 私钥
-rw-r--r--. 1 root root  395 Aug  3 07:51 id_rsa.pub  <- 公钥
-rw-r--r--. 1 root root  525 Aug  2 20:57 known_hosts

而该命令会在公钥的最后加上用户名和主机名,就是id_rsa.pub文件末尾 root@sys-blog的部分。该部分是ssh-keygen命令默认添加的Comment。

[root@sys-blog .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbyXCUf5Bw3eaL9U4ayoHZSli2DUO+rxSspqjNH1mGLB75eUDEvJc7xDXAsJoPIiiTM9HVFsLcvGLqPC51Ju7tjVyDTar44VFcJHS3rbKZEXxVb9DdKvEpqw4kaQB7YObvBrU/aRfKlxxvqWfTDlMIoqaLuf9xrnunSPT01Ao5SJC3AJLJMdN/FiiLAb/rmYrzrAiIgHaQjn+lq+267IM31pV78cDcAbMPIZp8UGxqUeBaDD19cEuZ/s1jN6cS4N7AHyGxhCybSwLWAorWkijdZLaDbd6rm9tS4r5AjLA/fZVN4aEadbuueFYBKF/cs9XzCqh+czCFBZXK4yDXC2z/ root@sys-blog

如果是测试用的话,有该注释也没有什么问题。但当我们需要把该秘钥对发布到其他服务器时,其实推荐使用-C “”选项,将该注释去掉。

[root@sys-blog ~]# ssh-keygen -t rsa -C "" -b 2048

使用-C选项后的id_res.pub文件内容如下。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBIJeajD0QtqYVehHzVWgJvLy9R8jfIgYuxwt5VwNNcrcMvJQY1OHwPdRh7sj0Q5PNdKKRI0Xp3HkQSYvc6+ZXQSQMT/s2oFQWPSQQbtbA3572AAY+7e0ceTVkdoHnGw/HJlA2uusPvkM2cuGBJlg5qqzydFs+Pa+h+sH57lFpNij6jjam8OZ9Rf9sqyEtay7pJtfth06Mbj/VXL3vvBlo8q0gmC54Ocagt6bKHKsq3oftm6QEdO/ff4eXR1rsGMGamHchc+9WA1OOIDM1Ar6NI9/BxPiZTfwdWyX173mrDlCZWB5VyQZ3LeDWEPqbV/bbCpvxCXIBsOUZKnvXP9ZV

ssh-copy-id命令将公钥拷贝到authorized_keys文件

使用ssh-copy-id命令将创建的秘钥对里的公钥拷贝到对象服务器,在这里将公钥拷贝192.168.16.16服务器的/root/.ssh/authorized_keys文件。

[root@sys-blog ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.16

使用秘钥登录对象服务器

最后使用ssh命令登录对象服务器进行确认,在这里指定已创建秘钥对里的私钥。

[root@sys-blog ~]# ssh -i id_rsa root@192.168.16.16