chef solo(knife solo)でさくらのvpsに鍵認証ログインする
最近chefにちょっと触れたので、chefでのvpsのログインを書きました。
chefって何?とかインストールなどは↓が詳しいですね。
http://ch.nicovideo.jp/dwango-engineer/blomaga/ar311555
手順
・ユーザーの作成
・公開鍵をアップロードして鍵認証可能に
・ユーザーをwheelグループに追加
・sudoersを書き換えて、ユーザーに管理者権限を付与
・sshd_configを書き替えて、rootログインを不可、パスワードログインを不可に
レシピ
user_name = "{ユーザー名}" ssh_key = "{公開鍵(ssh-rsaほにゃらら)}" home = "/home/#{user_name}" #ユーザーの作成 user user_name do home home password "{opensslで作成したpassword}" action :create end #公開鍵をアップロードして鍵認証可能に directory "#{home}/.ssh" do owner user_name group user_name end authorized_keys_file = "#{home}/.ssh/authorized_keys" file authorized_keys_file do owner user_name mode 0600 content ssh_key end #ユーザーをwheelグループに追加 group "wheel" do action :modify members user_name append true end #ユーザーにroot権限を与える template "sudoers" do path "/etc/sudoers" source "sudoers.erb" mode 0440 end #rootログインを無効。パスワードでのログインを無効。 template "sshd_config" do path "/etc/ssh/sshd_config" source "sshd_config.erb" mode 0600 end service "sshd" do action :restart end
解説
ユーザーの作成
パスワードは
openssl passwd -1 "指定したいパスワード"
で作成したものを入力します。
公開鍵をアップロードして鍵認証可能に
.ssh/authorized_keysファイルを作って、中に公開鍵を書きます。
ユーザーにroot権限を与える、rootログインを無効。パスワードでのログインを無効。
これらの設定ファイルを書き換えるのには、chefのtemplateというresourceを使います。
templateでは
{chefのリポジトリ}/site-cookbooks/{cookbooks名}/templates/default
以下にファイルのテンプレートを置き、
これをサーバにアップロードします。
このとき、拡張子は.erbにします。
scpコマンドなどでサーバから、
設定ファイル(今回はsudoers、sshd_config)をローカルに持ってきて、
自分の思うように編集してください。
今回は
sudoers
# %wheel ALL=(ALL) ALL
↓
%wheel ALL=(ALL) ALL
httpd_conf
#PermitRootLogin yes
PasswordAuthentication yes
↓
PermitRootLogin no
PasswordAuthentication no
にそれぞれ書き換えました。
これで、chef一発で鍵認証できるようになりました。
knife solo cook root@IPアドレス
何度も(10回くらい)パスワード聞かれるのでめげずに入力してください。