环境:ansible2.8.0
现实情况:panks2能以test用户登录目标主机,panks则不能以test用户登录目标主机。
发生现象:
- 第一次以panks执行任务失败;
- 当以panks2成功建立ssh会话执行任务成功后,再以panks执行任务也能成功;
- 等待一分钟左右后,再以panks执行任务就失败
经资料查询得出如下结果
ansible与远程主机的交互是依赖ssh,而ssh有Multiplexing的特性(使得主机与目标主机一旦成功建立ssh的session后,再次使用主机连接目标主机将复用之前的ssh session。这样就无视后面ssh连接时所带的认证信息,当之前的ssh session失效后就需要重新认证)
在ansible.cfg配置文件中
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
以上用于设置有关ssh_connection的参数
ControlMaster
:用于设置是否启用 ssh的Multiplexing,关闭则写no
ControlPersist
:ssh session保持的时间,(默认60s,0和0s都无效)