分享交流
合作共赢!

Ansible配置Linux主机免密码登陆

为了避免Ansible下发指令时输入目标主机密码,通过证书签名达到SSH无密码是一个好的方案,通过ssh-keygen与ssh-copy-id来实现快速证书的生成及公钥下发,其中ssh-keygen生成一对密钥,ssh-copy-id来下发生成的公钥。

一、方法一

1、执行 ssh-keygen -t rsa 生成密钥对

这里写图片描述

这时当前用户home目录下面会生成一对密钥,id_rsa 为私钥,id_rsa.pub 为公钥。

这里写图片描述

2、通过 ssh-copy-id 进行传输公钥

这里写图片描述

接着登录目标主机 ssh root@192.168.1.200,无须密码即可登录成功。并且查看当前用户下的 .ssh/目录,发现多出了两个文件:

1)known_hosts 用于验证连接的主机是否正确

2)authorized_keys 用来存放其他主机的公钥信息

这里写图片描述

二、方法二

建议使用免密码登录来管理服务器,在ansible的服务器上配置一套ssh的key,通过ssh-copy-id把公钥分发到要管理的服务器上。具体步骤如下:

1.使用ssh-keygen产生ssh密钥

[root@test-201 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:
dd:20:23:7c:1a:2e:01:bf:b1:67:7a:08:87:5f:e6:7e root@test-201
The key’s randomart image is:
+–[ RSA 2048]—-+
| . |
| o . |
| + + + . |
| . * = + o |
| o = B S . . |
| + X |
| + o |
| o E |
| .. |
+—————–+

2.将公钥发送到要管理的服务器

使用ssh-copy-id命令
比如要发送到10.2.31.202,使用如下命令:

[root@test-201 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.2.31.202
root@10.2.31.202’s password:
Now try logging into the machine, with “ssh ‘10.2.31.202’”, and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

3.将公钥批量发送到要管理的服务器
如果你有100台服务器初始化了,手动发key肯定很累的,如果你这100台机器密码一致,可以通过ansible的authorized_key模块来实现批量发送,命令如下

ansible test --ask-pass -u 用户名 -m authorized_key -a "user=用户名 key='$(cat ~/.ssh/id_rsa.pub)'"

之后输入机器的密码即可批量发送了。

使用ansible
命令格式如下:
ansible + 主机组名称 + -m + 模块名称 + -a + 参数

主机组名称,即hosts中定义的主机组名称
-m 指使用模块,后加指定的模块名称
-a 指传给模块的参数

在不指定模块时,默认调用command模块。

赞(0) 打赏
未经允许不得转载:琼杰笔记 » Ansible配置Linux主机免密码登陆

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏