Ansible需要ssh登录到对象服务器进行部署,一般使用公钥和私钥,在这里介绍使用ssh-keygen创建公钥及私钥,并把公钥注册到对象服务器的方法。
ssh-keygen命令创建公钥和私钥
在Linux上创建私钥和公钥对,使用 ssh-keygen 命令。选项 -t 可指定
[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命令后,会在
[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