Cygwin上的Ansible sudo运行(“作为根”)

时间:2018-12-17 11:41:31

标签: ssh ansible cygwin sudo

需要使用Ansible在远程主机上的sudo-user上运行bash脚本。我的工作计算机是Win10 + Cygwin(对不起,这不是我的错)。

因此,我在非sudo脚本上进行了测试(它不需要root访问权限)-并且可以正常工作。 不,第一次完全不起作用:Failed to connect to the host via ssh: my_user@server1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

因此,我使用了以下命令:my_user下的"ssh-keygen -t rsa" -> "ssh-copy-id my_user@server1" || "ssh-copy-id my_user@server2":创建了一个ssh-key并将其分配给远程主机。之后,我可以在server1,server2等上的my_user下运行脚本...

现在,我需要运行sudo脚本。但是我不明白,会怎样。

  1. 在Cygwin上没有ROOT用户。而且我不知道如何为不存在的用户生成ssh-key。
  2. 如何用root用户运行ansible剧本? remote_user: root出现错误:Failed to connect to the host via ssh: my_user@server1: Permission denied是my_user,不是root。它以my_user或root-user身份运行吗?
  3. 也许我根本做错了,并且有什么“最佳实践”可以运行sudo脚本吗?

哦,请帮我解决我的问题。

2 个答案:

答案 0 :(得分:0)

似乎在远程服务器上禁用了auth as root身份。 在/etc/ssh/sshd_config中找到PermitRootLogin并将其设置为“是”,但是我不建议您这样做。

实际上,请完全使用root用户-这是错误的做法。

检查您的my_user的权限。也许您可以在不使用密码的情况下授予sudo权限。

要以root身份编辑/etc/sudoers,请找到以下行:

# Allow members of group sudo to execute any command

然后添加以下内容:

my_user ALL=(ALL) NOPASSWD: ALL

之后,您将可以在没有密码的情况下在远程计算机上执行任何sudo命令。

答案 1 :(得分:0)

我做到了,但是我做了什么? 因此,解决步骤:

  1. 在剧本上设置become: true,在此处注释:

    主机:     test_hosts 成为:真实 vars:

  2. 接下来,运行带有“ -K”修饰符的剧本:ansible-playbook ./your_playbook.yml -K

因此,它可以工作:在sudo下运行甚至执行脚本。 但是我不明白,我该如何设置我使用的用户作为“可执行用​​户”。