在运行Ansible角色以禁用密码登录后,权限被拒绝(公钥)
我有一本Ansible的剧本,其中包括:在运行Ansible角色以禁用密码登录后,权限被拒绝(公钥),ansible,Ansible,我有一本Ansible的剧本,其中包括: 我为远程服务器生成SSH密钥 然后我在角色ssh 最后,我为根帐户设置了密码 剧本的2)和3)部分如下所示: - hosts: new_servers become: yes tasks: - block: - name: Run ssh role to enable login using SSH keys and disable password login include_role:
ssh
- hosts: new_servers
become: yes
tasks:
- block:
- name: Run ssh role to enable login using SSH keys and disable password login
include_role:
name: ssh
- name: Set Password on root Account
user:
name: user
password: "{{ user_password_hash }}"
update_password: always
ssh
角色有以下tasks/main.yml
,灵感来自:
处理程序重新启动SSH
如下所示:
---
- name: Restart SSH
service:
name: sshd
state: restarted
当我运行这个playbook时,它运行ssh
角色的所有任务,但是在运行重新启动sshd
服务的处理程序的最后一步失败,可能是因为密码登录现在被禁用了
PLAY [new_servers] *********************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************************************************************ok: [cm002]
TASK [Run ssh role to enable login using SSH keys and disable password login] ******************************************************************************************************************************************************
TASK [ssh : Set SSH port] **********************************************************************************************************************************************************************************************************ok: [cm002] => changed=true
backup: ''
msg: line added
TASK [ssh : Disable root SSH login] ************************************************************************************************************************************************************************************************ok: [mauocmacst002] => changed=true
backup: ''
msg: line added
TASK [ssh : Disable SSH password authentication] ***********************************************************************************************************************************************************************************changed: [mauocmacst002] => changed=true
backup: ''
msg: line added
RUNNING HANDLER [ssh : Restart SSH] ************************************************************************************************************************************************************************************************fatal: [cm002]: FAILED! =>
msg: 'Failed to connect to the host via ssh: user@cm002: Permission denied (publickey).'
NO MORE HOSTS LEFT ***************************************************************************************************************************************************************************************************************************
PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
cm002 : ok=0 changed=3 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
如何重新启动更改生效所需的
sshd
服务?我相信您可以使用set\u fact:
并在生成ssh密钥对后更改ansible身份验证机制,从而将ansible连接切换到使用新密钥对-您尝试过吗?@mdaniel谢谢,我没有尝试过,但我意识到错误的原因是因为我在我的ansible.cfg
文件中添加了SSH参数-o ServerAliveInterval=60
,以防止服务器在执行长时间任务(如apt get dist upgrade
)时与主机断开连接。有了这个参数,Ansible似乎试图重新建立与主机的SSH连接,但由于无法再使用密码而出错。您认为使用set\u fact
来使用ansible\u private\u key\u file
是同时获得所需效果的方法,还是有其他方法?
PLAY [new_servers] *********************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************************************************************ok: [cm002]
TASK [Run ssh role to enable login using SSH keys and disable password login] ******************************************************************************************************************************************************
TASK [ssh : Set SSH port] **********************************************************************************************************************************************************************************************************ok: [cm002] => changed=true
backup: ''
msg: line added
TASK [ssh : Disable root SSH login] ************************************************************************************************************************************************************************************************ok: [mauocmacst002] => changed=true
backup: ''
msg: line added
TASK [ssh : Disable SSH password authentication] ***********************************************************************************************************************************************************************************changed: [mauocmacst002] => changed=true
backup: ''
msg: line added
RUNNING HANDLER [ssh : Restart SSH] ************************************************************************************************************************************************************************************************fatal: [cm002]: FAILED! =>
msg: 'Failed to connect to the host via ssh: user@cm002: Permission denied (publickey).'
NO MORE HOSTS LEFT ***************************************************************************************************************************************************************************************************************************
PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
cm002 : ok=0 changed=3 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0