2013年12月20日金曜日

絵付きで解説! - SSH公開鍵認証 「TeraTermとPagentの連携」

Tera TermでPagent(+PuTTYgen)を使う

部室にあるサーバーのSSH認証方式を、公開鍵認証に変更しました。
これで都度のパスワード入力から開放されます。( ´∀`)エヘヘ セキュリティ強化もあり万々歳ですね。
メインとして使っているSSHクライアントはTeraTermなので、今回はこれにPagentを連携させてやります。
Windows 7で作業しました。

  Login As...

[tanaka@centos5.8 ~]$ echo "文字による表現が下手なので今回は絵付きで解説"

鍵生成ダイアログの表示

まずは、公開鍵と秘密鍵をTeraTermで作成します。
TeraTermを起動したら、「設定」から「SSH鍵生成(N)」をクリックして、鍵生成のダイアログを開いて下さい。
鍵生成ダイアログの表示


鍵生成の準備

ダイアログが表示されたら、ダイアログの右上にある「生成(G)」というキャプションのボタンを押します。
ダイアログ下部にある「公開鍵の保存(C)」と「秘密鍵の保存(P)」のボタンが有効になったことを確認して下さい。
鍵生成の準備


公開鍵の生成と保存

ボタンが有効になったら「公開鍵の保存(C)」のボタンを、鍵のパスフレーズを未入力のまま押します。
id_rsa.pubというファイル名で保存して下さい。(・ω・´)
公開鍵の生成と保存
(今回はC:\Users\Owner\SSH鍵というディレクトリを作成して保存しました)


秘密鍵の生成と保存

最後に秘密鍵を作成します。
先ほど押したボタンの右にある「秘密鍵の保存(P)」のボタンを、今度は鍵のパスフレーズを入力してから押します。
ここで入力したパスワードを忘れないで下さい。
このパスワードは、いつも使っているアカウントのログインパスワードとは別でOKです。
秘密鍵の生成と保存
(今回はC:\Users\Owner\SSH鍵というディレクトリを作成して保存しました)


秘密鍵の変換 (PuTTYgen)

Pagent読み込めるようにするために、先ほど作成した秘密鍵をPuTTYgenで変換します。
PuTTYgenを起動して秘密鍵を読み込んで下さい。 秘密鍵の生成と保存 1
秘密鍵を読み込むと、作成した秘密鍵のパスワードを入力するダイアログが表示されます。
作成時のパスワードを入力してOKOK秘密鍵の生成と保存 2
最後に変換された秘密鍵を保存して終了です。
保存する鍵の名前はid_rsa.ppkにしました。
秘密鍵の生成と保存 3


公開鍵の転送 (サーバーへの送信)

先ほど作成した公開鍵を、TeraTermを使って対象のサーバーへ送信します!
対象のサーバーに公開鍵認証をさせたいユーザーでログインしてください。 (`・ω・´)

サーバーにログインをしたら、TeraTermのメニューバー項目「ファイル」にある「SSH SCP」をクリックします。
すると、ファイルを送信できるダイアログが出てくるので、ダイアログ上側に表示されているファイル選択(参照)ボタンの「...」を押して、今回の公開鍵を選択。
選択したら、右にある「send」ボタンを押せばOKです。
公開鍵の転送 (サーバーへの送信)




公開鍵の設置

クライアントで作成した公開鍵をサーバーに設置します。
.sshというディレクトリを、ユーザーのホームディレクトリ直下にパーミッション700で作成します。
  (既に.sshディレクトリが存在する場合はこの作業は不要です。)
そして、公開鍵のデータをauthorized_keysというファイルに追記して下さい。
authorized_keysファイルのパーミッションは600です。
ファイルやディレクトリのパーミッションに気をつけて下さい。

今回、わたしはtanakaユーザーで作業しました。

.sshディレクトリをユーザーのホームディレクトリにパーミッション700で作成 (ディレクトリが存在しない場合)
[tanaka@centos5.8 ~]$ mkdir -m 700 .ssh

さきほどクライアントPCからTeraTermで送信した公開鍵を.sshディレクトリに移動
[tanaka@centos5.8 ~]$ mv id_rsa.pub ./.ssh/

公開鍵をauthorized_keysに追記 (ファイルが存在しない場合は作られます)
[tanaka@centos5.8 ~]$ cat ./.ssh/id_rsa.pub | tee -a ./.ssh/authorized_keys
ssh-rsa AAXXXXXXXyc2EAAAABIwAAAQEAotQXRRRRRbGPEoKkzigYxaX7jBYE2qvZEAAEEEEEMyLV5NvpHL+qcPHftBP3j1emHHHHH
EiCCCC3NmTViP2wFEEEEEh95BIK+BAfcTmiDMzhX1ouSNHg3e0WUvTJ/TxAJn6pHzHLVY6NtmBknskpSqFL1vUVi5/7uqa2dakphrwe
YKKwVqFDdj/HIE2pIbc3haZG9sBtnfYKn8X0d8qq1J28DuGFUWbxMjgVNSoUvfyRgzIzhzt4duEUof+cbQDt3u+geUU0EAbOoAhbziQ
Sl0Q== clientname

authorized_keysのパーミッションが600でない場合は600に変更
[tanaka@centos5.8 ~]$ chmod 600 ./.ssh/authorized_keys

不要になった公開鍵を削除
[tanaka@centos5.8 ~]$ rm -i ./.ssh/id_rsa.pub
rm: remove 通常ファイル `./.ssh/id_rsa.pub'? y


sshd_configの編集

sshd_configに設定された次の3つの項目(値)を確認して下さい。
noになっていたり、未指定だった場合は設定してあげて下さい。

[tanaka@centos5.8 ~]$ sudo vi /etc/ssh/sshd_config
~中略~
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

パスワード認証を禁止する場合は次のように設定!

PasswordAuthentication no

sshd_configの編集が終わったら、sshdを再起動です。
サーバー側の準備が出来たらログアウト!

いよいよパスワード無しでの接続。
クライアント側でPagentを起動します。(起動するとタスクトレイに入っていると思います。)
起動したら鍵の読み込みボタンを押してダイアログを開きます。
先ほどPuTTyGenで変換した秘密鍵(ppkファイル)を指定して下さい。
(この時も秘密鍵作成時のパスワードを入力する必要があります)
Pagentの起動と秘密鍵の指定
セットが完了したら、あとはログインを実行してみるだけ。c(・ω・`c⌒っ
TeraTermを起動したらPagentを使うというラジオボタンにチェックを入れて、OKボタンを押すだけです。
TeraTermでPagentを使う


Last login: Thu Dec 31 23:59:59 2013 from 192.168.1.105
[tanaka@centos5.8 ~]$

無事にログイン出来ました!!!ヽ(´▽`*)ノ

今回お世話になったサイト