web-dev-qa-db-ja.com

SSHエラー:Ansibleで許可が拒否されました(公開鍵、パスワード)

私はansibleが初めてで、それを実装しようとしています。インターネットに存在するすべての可能な方法とそれに関連するすべての質問を試しましたが、それでもエラーを解決することはできません。私を助けてください。

Macbookにansibleプレイブックをインストールしました。 IPが10.4.1.141でホストIPが10.4.1.140であるVMを作成しました

私はVM ssh経由でホストを使用して、次のコマンドで接続しました:

ssh [email protected]

シェルにアクセスできました。これは、私のsshがうまく機能していることを意味します。

今、私はAnsibleのために次のコマンドを試しました:

ansible all -m ping

/etc/ansible/Hostのコンテンツは10.4.1.141です

次に、次のエラーが表示されます。

10.4.1.141 | FAILED => SSHエラー:許可が拒否されました(公開鍵、パスワード)。

10.4.1.141:22への接続中に-vvvvを使用してコマンドを再実行すると、問題の診断に役立つSSHデバッグ出力が出力されることがあります。

次に、ホストマシンの.ssh/フォルダーにconfigファイルを作成しようとしましたが、エラーは同じままです。

configファイルの内容は次のとおりです。

  IdentityFile ~/.ssh/id_rsa

これは私の秘密鍵へのパスです。

次に、同じコマンドansible all -m pingを実行しましたが、再び同じエラーが発生しました。

別のコマンドを試したとき

ansible all -m ping -u user --ask-pass

次に、SSHパスワードを要求し、それを与えました(パスワードが正しいことを確認してください)が、このエラーが発生しました:

10.4.1.141 | FAILED => FAILED:認証に失敗しました。

これは-vvvvを使用したログです:

<10.4.1.141> ESTABLISH CONNECTION FOR USER: rajatg
<10.4.1.141> REMOTE_MODULE ping
<10.4.1.141> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/rajatg/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 10.4.1.141 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && echo $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007'
10.4.1.141 | FAILED => SSH Error: Permission denied (publickey,password).
    while connecting to 10.4.1.141:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

私はまだ問題が何であるかを理解することができません。私のすべての研究を行った後、ここでそれを尋ねることは私の最後の選択です。 これは私が参照したリンクです

21
Rajat Gupta

問題を修正しました。問題は私の/etc/ansible/hostsにありました。

/etc/ansible/hostsで記述されたコンテンツは10.4.1.141でした。しかし、それを[email protected]に変更すると、問題は修正されます。

皆様のサポートに感謝し、コメントの助けにより問題についてより明確に説明してくれました。

28
Rajat Gupta

ssh [email protected]でログインした場合:

オプション1

次に、etc\ansible内のhostsファイルに次のものがあることを確認します。

[server01]
10.4.1.141

etc\ansible内で実行:ansible all -m ping -u user --ask-pass

オプション2

Sshパスワードを入力せずにログインする場合は、etc\ansible内のhostsファイルに以下を追加します。

[server01]
10.4.1.141 ansible_ssh_pass=xxx ansible_ssh_user=user

etc\ansible内で実行:ansible all -m ping

私にとっては、両方の方法で機能しました。

4
bebs

ほとんどの問題は、ホストでUbuntuマシンを接続しているときに発生します。解決策Ansibleは、Ubuntuにデフォルトのrootユーザーがないため、どのユーザーが接続するかを要求しました。

hostsファイル用

[テストWebサーバー]

10.192.168.10 ansible_ssh_pass = foo ansible_ssh_user = foo

3
user10126649

たとえば、sudoでansibleを実行する場合

Sudo ansible -m ping all

rootの公開鍵は、非rootユーザーからの公開鍵だけでなく、到達したいサーバーにも存在する必要があることに注意してください。それ以外の場合は、上記のエラーメッセージも表示されます。

この問題も修正しました。

私の問題は、ホストファイル/etc/ansible/hostsにもありました。

ホストファイルを172.28.2.101からname-of-server-in-ssh-configに変更しました

HostsファイルにIPがありました。名前のSSH設定がすでに設定されているため、ホストの前で変数またはユーザー名を使用する必要はありません。

[name-stg-web]
server-name-stg-web[01:02]
1
camdixon

/ etc/hostsファイルにユーザー名を記載することでも問題を解決できます。

#Sudo vim /etc/hosts
[test-server]
ip_address ansible_user="remote pc's username" 
0
Hareesh R

残念ながら、上記のソリューションはうまくいきませんでした(DevOpsの素人です!)。しかし、以下のものは私のために働いた。

インベントリファイルを次のように変更します。

[webserver] 10.4.1.141 ansible_user=ubuntu

ansible webserver --private-key pem_file.pem -m ping

-vvvvを使用してコマンドを押すと、さらにデバッグできるようになりました。

参照: https://github.com/ansible/ansible/issues/19584

0
Nätu

問題はインベントリファイルにあります。

vi/etc/ansible/hosts

[ウェブサーバー] 192。###。###。### ansible_ssh_user = user ansible_ssh_pass = pass

これがお役に立てば幸いです!

0
Sonal