gpt4 book ai didi

linux - 运行包含 ansible 命令的 shell 脚本时权限被拒绝 - 公钥

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:37 24 4
gpt4 key购买 nike

我有一个 shell 脚本

#!/bin/bash

echo "hello world"

ansible zookservers -i /home/ec2-user/kafka_scripts/ansible_rep/inventory -a "/home/ec2-user/kafka_2.11-0.9.0.0/bin/kafka-server-start.sh kafka_2.11-0.9.0.0/config/server.properties" --sudo
<小时/>

我的错误是

 | FAILED => SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
while connecting to 172.30.0.243:22

当我运行 ansible 命令时,它正在执行但是当我将它保存在 shell 脚本中时,我收到了上述错误

我的 shell 具有 chmod 777 权限 - 所以问题不在于 shell 执行权限

我发现了一些有趣的事情当我从任何其他地方运行脚本时,我收到错误。但是当在 ansible 目录中运行它时,它就会被执行。稍后,当我从任何其他目录运行它时,它不会抛出任何错误。所以问题出在初始公钥认证上

最佳答案

I found something intersting -- when I run the script from any other place I'm getting error. but when run it in ansible directory then it is executed

问题很可能是 ansible.cfg 的位置。 Ansible 将使用以下位置之一的配置(来自 docs ):

  • ANSIBLE_CONFIG(环境变量)
  • ansible.cfg(在当前目录中)
  • .ansible.cfg(在主目录中)
  • /etc/ansible/ansible.cfg

第一场比赛获胜。

因此它使用“ansible 目录”中的配置(如果 那里调用)。如果从任何其他位置调用,则该目录中没有 ansible.cfg。由于这是您存储用户名和私钥位置的位置,因此身份验证失败。

最好的解决方案似乎是利用环境变量ANSIBLE_CONFIG。只需将 ansible.cfg 的路径存储在那里即可。我认为它是 /home/ec2-user/kafka_scripts/ansible_rep/ansible.cfg,对吗?

您可以在脚本中设置该变量。

ANSIBLE_CONFIG=/home/ec2-user/kafka_scripts/ansible_rep/ansible.cfg ansible zookservers -i /home/ec2-user/kafka_scripts/ansible_rep/inventory -a "/home/ec2-user/kafka_2.11-0.9.0.0/bin/kafka-server-start.sh kafka_2.11-0.9.0.0/config/server.properties" --sudo

关于linux - 运行包含 ansible 命令的 shell 脚本时权限被拒绝 - 公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136692/

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