web-dev-qa-db-ja.com

Chef-パスワードなしのSSH

実行時:

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}}

何か案は?

5
James McDougall

直した!

したがって、ホストされたシェフを使用しているときは、bootstrapで秘密鍵を渡し、公開鍵をautherized_keysファイルに含める必要があります。..

  1. chefSDKをインストールする
  2. ホストされたシェフのスターターキットをSCP
  3. スターターキットを~/chef-repoに抽出します
  4. 新しい鍵ペアを生成します:ssh-keygen
  5. 公開鍵をautherized_keysファイルに追加します:$ cat id_rsa.pub >> authorized_keys
  6. ナイフを実行するbootstrap以下を使用して:

    Sudo knife bootstrap {{server-ip}} --ssh-user {{your-server-user}} -i ~/.ssh/id_rsa --Sudo --node-name web1

それはうまくいくはずです!

--ssh-userとして渡すユーザーには、パスワードなしのSudoアクセスがあることもお勧めします。

5
James McDougall

Timが示唆しているように、SSH認証キーとしてHosted Chef ServerまたはオンプレミスChef Serverから提供されたキーを使用する人は誰も知りません。

Chefサーバーによって提供されるキーは通常、ChefサーバーのAPIに対する認証のためにchef-clientやknifeなどのChefクライアントツールによってのみ使用されます。

Timの最初の応答とJamesの最終的な回答が示唆するように、SSH認証用に別のキーペアを作成するのが正しい方法です。これは手動で、またはChefを使用して適切なSSH鍵でシステムを構成することにより行うことができます。

2
Jeremiah Snapp

必要なのは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

お役に立てれば。ティム。

2