gpt4 book ai didi

ssh - 使用密码和私钥进行 Ansible SSH 身份验证

转载 作者:行者123 更新时间:2023-12-02 14:27:28 24 4
gpt4 key购买 nike

出于安全原因和合规性,我们需要在主机上设置 2FA。我们通过强制使用密码和带有 AuthenticationMethods 的公钥的身份验证来实现它。在 sshd_config 中设置。私钥也需要有密码。

因此,为了在这些主机上运行 playbook,我们需要能够输入登录密码和私钥密码。我用过-kansible_ssh_private_key_file 一起标记hosts 文件中的选项(或带有 --private-key 标志)。它要求输入 SSH 登录密码,但它只是挂起,从不要求我输入私钥密码。当我设置 -vvvv flat 我看到 key 传递正确,但是没有通过命令传递 SSH 登录密码:

<10.1.2.2> SSH: EXEC sshpass -d10 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o Port=22022 -o 'IdentityFile="/home/me/.ssh/id_ed25519"' -o 'User="me"' -o ConnectTimeout=10 -o ControlPath=/home/me/.ansible/cp/db574551ae 10.1.2.2 '/bin/sh -c '"'"'echo ~me && sleep 0'"'"''

如何让 Ansible 同时使用密码和公钥?

最佳答案

Ansible Documentation 中所述:

Ansible does not expose a channel to allow communication between the user and the ssh process to accept a password manually to decrypt an ssh key when using the ssh connection plugin (which is the default). The use of ssh-agent is highly recommended.



这就是为什么没有提示您输入私钥密码的原因。如评论中所述,设置 ssh代理 ,当系统提示您输入时:
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

然后,在 playbook 执行后, clear out identities所以下次被要求输入密码:
# Deletes all identities from the agent:
ssh-add -D
# or, instead of adding identities, removes identities (selectively) from the agent:
ssh-add -d <file>

您可以将 key 添加、剧本执行和清理打包到一个包装器外壳脚本中。

关于ssh - 使用密码和私钥进行 Ansible SSH 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61366942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com