2014/02/24

公開鍵でログインできるSSHユーザーを作る

rsyncしたりchefを使ってサーバーのコントロールを一括して行ったりする場合には公開鍵を使ってパスワードなしにログインできるユーザーを作る訳ですが、そうそうやるわけでもなく毎回調べるので、いい加減まとめておきます。
対象ホストに自動ログインできるまでの最短距離をまとめました。慣れれば3分くらいでできる作業です。




前提

  • ログイン先のサーバーのホスト名をexample1.com、ログイン元のホスト名をexample2.jpとする。
  • example1.comにはystreamというユーザーでログインする。
  • 公開鍵があればパスワードは必要なくログインできるようにする。

ログイン先のサーバーでystreamユーザーを作成、パスワード設定。
#rootで作業
useradd ystream
passwd ystream    #パスワードを2回入力

SSHの設定確認
ファイルは/etc/ssh/sshd_config
公開鍵認証に関する設定は3つ
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

初めて設定する場合はコメントアウトされているのでアンコメントする。
コンフィグファイルの確認。
/usr/sbin/sshd -t
# 特に何も表示されなければおk

SSHを再起動。

ログイン元のサーバー(サーバー名:example2.jp)からパスワードを使ってystreamユーザーでログインできるか確認
ssh ystream@example1.com

ログインが成功したら、そのまま鍵を生成する。
cd ~/.ssh    #.sshが存在しない場合はmkdirする。
ssh-keygen -t rsa    #作成時にパスフレーズを聞かれるが何も入力せずエンター
cat id_rsa.pub >> authorized_keys
rm id_rsa.pub

#./sshのパーミッションは0700とかにしておく
chmod 0700 ~/.ssh/
#./ssh/*のパーミッションは0600にしておく
chmod 0600 ~/./ssh/*

秘密鍵(id_rsa)をexample2.jpに持ってくる。
秘密鍵はexample1.comにログインする可能性のあるユーザーのホームディレクトリの.sshディレクトリのみ配置するようにする。

持ってくる方法
  • 物理メディアにコピーして移動(ネットワークに上げない) → これが一番手堅い。
  • SCP、SSHのコンソール上でコピペ → example1.comがデータセンターなど手が届かないところにある場合。
  • FTPでアップロード → もうIT業界からいなくなった方がいい。

移動後、秘密鍵を秘密の場所に隠す
だいたいはログイン時に利用するユーザーの~/.ssh/以下。複数の鍵を扱う事もあるのでサーバーが分かるようにリネーム。
mv id_rsa rsa_ystream_example1.com

#./sshのパーミッションは0700とかにしておく
chmod 0700 ~/.ssh/
#./ssh/*のパーミッションは0600にしておく
chmod 0600 ~/./ssh/*

#ちなみに秘密鍵のパーミッションがおかしいと以下の様な表示が出る。
#出たので載せておく(笑)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

example2.jpから秘密鍵を使ってログインしてみる
ssh -i ~/.ssh/rsa_ystream_example1.com ystream@example1.com
Last login: Wed Feb 16 23:14:17 2014 from example2.jp
[ystream@example1 ~]$ 

成功。


0 件のコメント:

コメントを投稿