首先需要了解ssh 普通用户登陆的做法:
1.普通用户ssh 免密码登陆
举个例子:
[A@source ~]$ssh user@10.0.0.1
表示当前用户A以用户user登陆10.0.0.1,
如果省略用户, 即:ssh 10.0.0.1,表示以当前用户A登陆
这里记住两个用户:
A: 当前用户,执行ssh 的用户
user:登陆10.0.0.1的用户, 这个用户是属于10.0.0.1的,必须在10.0.0.1上存在
在不考虑public key的的权限问题下,若要实现免密登陆成功,就要在10.0.0.1上user用户家目录下的.ssh/id_rsa.pub(公钥保存文件根据sshd实际配置而异)下添加用户A的public key;
2.ansible 普通用户执行命令
ansible用于远程连接的paramiko模块是基于ssh的,因此,同样的道理,执行ansible命令:
[root@ source~]# ansible 10.0.0.1 -m raw -a "date"
表示ansible将会以root用户登陆客户机执行date命令,当然,更安全的做法是用普通用户登陆,因此,需要加 选项 -u
[root@ source~]# ansible 10.0.0.1 -m raw -a "date" -u www
这样ansible就会以www用户登陆客户端,不过,根据之前所述,必须保证www用户有root用户的公钥;
或者也可以采用另一钟方法,在ansible的主机配置文件中指定ssh_user
vi/etc/ansible/hosts
10.0.0.1 ansible_ssh_user=www
这样,执行命令就不需要带 -u 参数了
转载于:https://blog.51cto.com/3379770/1906326