我们在上篇文章分享了inventory.ini文件的编写及使用,那么我们是否有注意到一点风险较高的内容呢。没错就是我们把服务器的密码写到了inventory.ini文件中,这是一个风险很高的事情。一旦inventory.ini文件丢失那可是无法想象会发生什么事情。所以我们今天就要分享一下如何在ansible上使用SSH-KEY的认证方式。
我们打开inventory.ini将密码进行删除,此时我们测试一下ansible ping的结果,是无法进行连接的。
pangshare-01 ansible-node[1:2] ansible_connection=ssh ansible_user=root
# 命令执行结果 ansible-node1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true } ansible-node2 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true }
创建SSH-KEY
进入.ssh文件夹后输入ssh-keygen
,此时我们会看到如下提示,为了方便后面的使用,我们把ssh-key保存到我们指定的文件夹后进行命名
# 路径为/root/.ssh/ansible Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/ansible # 密码为空 Enter passphrase (empty for no passphrase): #密码为空 Enter same passphrase again:
创建完成,我们查看文件可以看到系统为我们生成了两个文件ansible(私有密码)、ansible.pub(公有密钥)。其中ansible为私有密钥一定要保存好。
复制密钥
当我们在ansible-control机器上创建好了密钥后,我们可以通过命令将ssh-key传递到ansible-node1\ansible-node2上。
# 在.ssh目录下执行 ssh-copy-id -i ansible ansible-node1
# 命令执行结果 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "ansible.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys # 提示需要输入ansible-node1密码 root@ansible-node1's password: # 提示已经增加了一个密钥在ansible-node1上 Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible-node1'" and check to make sure that only the key(s) you wanted were added.
接下来我们登录到ansible-node1上检查一下密码的情况是否已经存在了ansible密钥
登录到ansible-node1上,查看.ssh目录下我们可以看到有一个文件是authorized_keys,我们查看一下这个文件的内容可以看到root@ansible-control信息。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgX9atktyRlUDOx8TfyaOhO9E0v1hTkfl0uu4UwoimtD+RkUwg6fa6BB8gzFpdohtglLsSCpZXy+i7Hez114vNlpYJLc/jypMllNiNa/9JcZ6c9USY6vElqzxWoHhF67dZcv6aY159NiwppC1VZVDFLe9+u7o8jdDzszAPJEaxDj/M2DD1DEBmsbG222FAjP6nyyyAQLlaaLD+hNchfsYMp0p1NcVVEKDtYvQl46o/WX/IZnGzz/Q0B6FcxDCsq6RsewRLfB4RCF4PLOka0hCgxB5D+hk6VBu75nkpx0/UdQeAEay4/9iqa+8JLo6cV6oyUlES8/nq5GBIXyYvtnZ/ root@ansible-control
使用SSH-KEY进行登陆
我们登陆到ansible-control使用ssh-key验证并登陆到ansible-node1上,同样的方法将SSH-KEY同步到ansible-node2上。
[root@ansible-control ~]# ssh -i .ssh/ansible ansible-node1 Last login: Mon Jul 20 16:29:14 2020 from 192.168.31.97 [root@ansible-node1 ~]#
ansible使用SSH-KEY
我们将inventory.ini文件中的密码删除后,在ansible-control上输入下面的命令通过ssh-key与受控主机进行联系。
ansible pangshare-01 -m ping -i inventory.ini --private-key=/root/.ssh/ansible
# 命令执行结果 ansible-node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } ansible-node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
此文章为原创文章,作者:胖哥叨逼叨,如若转载,请与我联系并注明出处:https://www.pangshare.com/2396.htm