首先需要了解 ssh 普通用户登陆的做法:
1. 普通用户 ssh 免密登陆
举个例子:
- [ ~]$ssh
表示当前用户 A(可以是 root 或者任何其他用户)以用户 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 实际配置而异)下添加 source 这台机器上用户 A 的 public key;
2.
ansible 用于远程连接的 paramiko 模块是基于 ssh 的,因此,同样的道理,执行 ansible 命令:
- [root@ source~]# ansible 10.0.0.1 -m raw -a"date"
表示 ansible 将会以 root 用户登陆客户机执行 date 命令,但是,处于安全考虑,客户端往往不允许 root 登陆;还好 ansible 是支持非 root 用户登陆的,加 -u 参数就可以了
- [root@ source~]# ansible 10.0.0.1 -m raw -a "date" -u www
表示以 www 用户登陆客户端执行命令,不过,根据之前所述,必须保证 www 用户有 root 用户的公钥;
或者也可以采用另一钟方法,在 ansible 的主机配置文件中添加
- vi/etc/ansible/hosts
- 10.0.0.161 ansible_ssh_user=www
这样,执行命令就不需要带 -u 参数了
来源: http://www.bubuko.com/infodetail-1982585.html