【问题标题】:Ansible sudo run ("as root") on Cygwin在 Cygwin 上运行 Ansible sudo(“以 root 身份”)
【发布时间】:2019-05-17 18:42:27
【问题描述】:

需要使用 Ansible 在远程主机上的 sudo-user 处运行 bash-script。我的工作机器是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 playbook? remote_user: root 出现错误:Failed to connect to the host via ssh: my_user@server1: Permission denied 看,这是 my_user,而不是 root。它是以 my_user 还是 root-user 身份运行的?
  3. 也许我做错了,是否有任何“最佳实践”-vay 来运行 sudo 脚本?

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

【问题讨论】:

  • 所以,我找到下一个:1. 将become: true 设置为剧本,2. 使用 -K attr ansible-playbook ./fluentd_install.yml -K 它运行时询问 sudo(?) 密码,然后执行脚本。抱歉,我现在卸载有问题,所以我无法检查任务是否运行正确。但它跑了。

标签: ssh ansible cygwin sudo


【解决方案1】:

似乎在远程服务器上禁用了 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 命令。

【讨论】:

    【解决方案2】:

    我做到了,但我做了什么? 所以,解决步骤:

    1. 在 playbook 上设置 become: true,在此处设置:

      主持人: 测试主机 变成:真 变量:

    2. 接下来,使用“-K”属性运行 playbook:ansible-playbook ./your_playbook.yml -K

    所以,它可以工作:在 sudo 下运行甚至执行脚本。 但我不明白,我怎样才能将我使用的用户设置为“可执行用​​户”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 2017-07-29
      • 2013-12-19
      • 2022-09-29
      相关资源
      最近更新 更多