実行時:
knife bootstrap {{IP}} --ssh-user centos --ssh-password '' \
--Sudo --use-Sudo-password --node-name node1 \
--run-list 'recipe[learn_chef_httpd]'
次のエラーが発生します。
ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user centos@{{IP}}@{{IP}}
SSH-Key Authを使用したいので、パスワードのないcentosユーザーに接続しようとしています。
私はいくつかの順列を渡そうとしました:
knife bootstrap {{IP}} -x centos -i .chef/james-chef-validator.pem --Sudo --run-list 'recipe[learn_chef_httpd]'
すべて成功せず...
-VVで実行している場合:
...
DEBUG: allowed methods: publickey,gssapi-keyex,gssapi-with-mic
DEBUG: none failed
DEBUG: trying publickey
DEBUG: connecting to ssh-agent
ERROR: could not connect to ssh-agent
ERROR: all authorization methods failed (tried none, publickey)
ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user centos@{{IP}}@{{IP}}
何か案は?
直した!
したがって、ホストされたシェフを使用しているときは、bootstrapで秘密鍵を渡し、公開鍵をautherized_keysファイルに含める必要があります。..
~/chef-repo
に抽出しますssh-keygen
$ cat id_rsa.pub >> authorized_keys
ナイフを実行するbootstrap以下を使用して:
Sudo knife bootstrap {{server-ip}} --ssh-user {{your-server-user}} -i ~/.ssh/id_rsa --Sudo --node-name web1
それはうまくいくはずです!
--ssh-userとして渡すユーザーには、パスワードなしのSudoアクセスがあることもお勧めします。
Timが示唆しているように、SSH認証キーとしてHosted Chef ServerまたはオンプレミスChef Serverから提供されたキーを使用する人は誰も知りません。
Chefサーバーによって提供されるキーは通常、ChefサーバーのAPIに対する認証のためにchef-clientやknifeなどのChefクライアントツールによってのみ使用されます。
Timの最初の応答とJamesの最終的な回答が示唆するように、SSH認証用に別のキーペアを作成するのが正しい方法です。これは手動で、またはChefを使用して適切なSSH鍵でシステムを構成することにより行うことができます。
必要なのはSSH鍵です。
最初に、「node1」サーバー(以下で参照)には、「centos」ユーザー(以下で参照)のパスワードを設定する必要があります。そのユーザーのパスワードを設定したら、以下の手順に従ってください。
クライアントサーバー(chefを実行しているサーバー)にchefユーザーとしてログインを設定し、実行するには
ssh-keygen -t rsa
指示に従います(パスワードの入力を求められたら、Enterキーを押します)
次に、次のコマンドを実行します
ssh-copy-id <targetuser>@<targetserver>
画面の指示に従ってください。これですべてです。
その後、シェフはそのsshキーを自動的に取得する必要があります。
編集:
Hosted Chefの場合、プロセスは少し異なります。 Chef Manageで、[管理]> [ユーザー]に移動し、ユーザー名を選択します。そこに公開鍵が表示されます。
ターゲットサーバーにターゲットユーザーとしてログインし、〜/ .sshディレクトリがあるかどうかを確認します。
ls ~/.ssh
それが「ls:can not access〜/ .ssh:No such file or directory」と表示された場合
mkdir ~/.ssh
次に、選択したコマンドラインファイルエディター(VIMを使用することをお勧めします)を使用して、ファイル〜/ .ssh/authorized_keysを作成し、Hosted Chefで見つけた公開鍵をそのファイルにコピーします。
編集:公開鍵が次の形式の場合:
-----BEGIN PUBLIC KEY-----
まず、それをSSH公開鍵形式に変換する必要があります。
これを行うには、ローカルマシンにpublickey.pemという名前のファイルを作成し、そこに公開鍵をコピーします。次に、その場所にターミナルを開いて実行します。
ssh-keygen -f publickey.pem -i -m PKCS8
お役に立てれば。ティム。