LoginSignup
1
1

More than 5 years have passed since last update.

パスフレーズ付き秘密鍵を使った knife zero converge

Posted at

概要

  • 今更ながら knife solo から knife zero へスキルシフトしている。その時に躓いたことをメモしておく。

  • AWS で EC2 を利用する場合は、たいてい AWSマネジメントコンソール から作成したキーペアを使っている。 けど、それには秘密鍵にパスフレーズが付いていない。セキュリティの感度が高い人は独自にパスフレーズ付き秘密鍵のキーペアを作成してインポートしているはず。

  • macOS にある chefレシピ を knife zero で chefクライアントである EC2 (ホスト名:chef-client-host) へ収束するときにパスフレーズ付き秘密鍵のキーペアを使う場合は、knife zero 実行前に ssh-agent で秘密鍵を登録しておく必要がある。

  • macOS側の .ssh/config と、EC2(chef-client-host) の knife zero bootstrap は設定済み。

エラー&トライ

  • エラーメッセージ
$ knife zero converge "name:chef-client-host" --sudo
WARNING: Failed to connect to ec2-x-x-x-x.ap-northeast-1.compute.amazonaws.com -- Net::SSH::AuthenticationFailed: Authentication failed for user foo@ec2-x-x-x-x.ap-northeast-1.compute.amazonaws.com@ec2-x-x-x-x.ap-northeast-1.compute.amazonaws.com
ERROR: NoMethodErrorundefined method `forward' for nil:NilClass
ERROR: /Users/foo/.chefdk/gem/ruby/2.4.0/gems/knife-zero-1.19.1/lib/knife-zero/bootstrap_ssh.rb:32:in `block in ssh_command'
/Users/foo/.chefdk/gem/ruby/2.4.0/gems/knife-zero-1.19.1/lib/knife-zero/bootstrap_ssh.rb:30:in `each'
  • 対処
    「-x」オプションでユーザー名を指定する
    「ssh-add」で鍵を登録する
▼ssh-agent起動
$ eval `ssh-agent`
Agent pid 3726

▼秘密鍵を登録する
$ ssh-add ~/.ssh/秘密鍵
Enter passphrase for /Users/foo/.ssh/秘密鍵:
パスフレーズを入力

▼確認
$ ssh-add -l
4096 SHA256:***** /Users/foo/.ssh/秘密鍵 (RSA)

▼収束開始
$ knife zero converge "name:chef-client-host" -x ec2-user --sudo

▼鍵の登録を削除
$ ssh-add -d ~/.ssh/秘密鍵
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1