[英]permission denied-public key while running a shell script which contains ansible command
我有一個 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 腳本中時,我收到了上述錯誤
我的外殼具有 chmod 777 權限 - 所以問題不是外殼執行權限
當我從出現錯誤的任何其他地方運行腳本時,我發現了一些有趣的事情。 但是當在 ansible 目錄中運行它時,它就會被執行。 稍后當我從任何其他目錄運行它時,它不會拋出任何錯誤。 所以問題在於初始公鑰認證
我發現了一些有趣的東西——當我從任何其他地方運行腳本時,我遇到了錯誤。 但是當在 ansible 目錄中運行它時,它就會被執行
問題很可能是您的ansible.cfg
的位置。 Ansible 將使用這些位置之一的配置(來自docs ):
第一場比賽獲勝。
所以它使用來自“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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.