需要使用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脚本。但是我不明白,会怎样。
remote_user: root
出现错误:Failed to connect to the host via ssh: my_user@server1: Permission denied
是my_user,不是root。它以my_user或root-user身份运行吗?哦,请帮我解决我的问题。
答案 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)
我做到了,但是我做了什么? 因此,解决步骤:
在剧本上设置become: true
,在此处注释:
主机: test_hosts 成为:真实 vars:
接下来,运行带有“ -K”修饰符的剧本:ansible-playbook ./your_playbook.yml -K
因此,它可以工作:在sudo下运行甚至执行脚本。 但是我不明白,我该如何设置我使用的用户作为“可执行用户”。