SSH接続を公開鍵暗号方式で行う方法 〜SubversionをSSHで利用する(3)〜
以前、SSH接続でSubversionを使用する方法を紹介しましたが、
当時はパスワード認証を利用していました。
SubversionをSSHで利用する(1)(svn+ssh)
http://d.hatena.ne.jp/taiyakisun/20101211#1292049559
SubversionをSSHで利用する(2)(svn+ssh)
http://d.hatena.ne.jp/taiyakisun/20101212#1292173223
しかしリポジトリとやり取りをする度にパスワードを入力するのは
煩わしいですし、パスワードを管理するのもめんどくさいです。
今回は、公開鍵暗号方式によりパスワード入力を不要にします。
鍵認証の技術は複雑かもしれませんが、設定は簡単な数ステップの操作を実行するだけです!
環境
サーバーOS
Linux(CentOS5.5 64-bit)で、OpenSSHを使用します。
OpenSSHのインストールはしておいてください。
サーバー上のユーザー名は「taiyakisan」とします。
サーバー名は「lapislazuli」とします。
今回必要になるソフトウェア
クライアントでSSH公開鍵/秘密鍵を作成します。
鍵の作成にPuTTYを使用します。
私はPuTTY 0.60 ごった煮版を使用しました。
http://yebisuya.dip.jp/Software/PuTTY/
クライアント側で行う作業
鍵の生成
公開鍵/秘密鍵のペアを生成します。
PuTTYをインストールしたフォルダ内のputtygen.exeを実行します。
上のダイアログが表示されたら[生成]ボタンを押します。
マウスの動きから鍵を生成するので、適当にマウスを動かしてください。
続いて、上図(1)の公開鍵/秘密鍵を使うためのパスフレーズを入力します。
これはサーバのパスワード等とは何も関係がないので好きな文字列を入れてください。
それが終わったら上図(2)の鍵の保存を行います。保存するのは秘密鍵だけでいいです。
ここでは保存したファイルを「C:\temp\id_rsa.ppk」とします。
鍵をpageantに秘密鍵とパスフレーズを登録する
pageantに秘密鍵とパスフレーズを登録すると、サーバーとの接続時に
いちいち「どの秘密鍵を使いますか?」「秘密鍵のパスフレーズは?」と聞かれずに済みます。
#というか毎回上のことを聞かれてたらなんのための鍵認証かわかんないですよね。
#パスワード認証と変わんないじゃん、という感じですね^^;
PuTTYをインストールしたフォルダ内のpageant.exeを実行します。
タスクトレイアイコンにpageant.exeのアイコンが追加されるのでダブルクリックします。
上のダイアログが表示されたら[鍵の追加]ボタンを押します。
先ほど保存した秘密鍵「C:\temp\id_rsa.ppk」を指定します。
パスフレーズを求められたら入力してください。
すると上図のように鍵のフィンガープリントが表示されて鍵の追加が完了します。
注意点として、この設定はOSの再起動ごとに行う必要があります。
またサーバーとの接続時にはこのpageant.exeを起動して常駐させておく必要があります。
(タスクトレイにアイコンがあれば常駐してます)
サーバ側で行う作業
OpenSSHで鍵認証機能を有効にする
PuTTYやTeratermを使ってLinuxに接続します。
/etc/ssh/sshd_confをviなどで以下のように編集します。
すでに有効にしている場合は、設定の必要はありません。
#RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys ↓ #を外す。 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
続いて、以下のコマンドで設定ファイルに誤りがないか確認します。
/usr/sbin/sshd -t
誤りがないことを確認したら、以下のコマンドでsshdを再起動します。
service sshd restart
接続テスト
いよいよ接続テストです。
クライアントで以下のコマンドを実行して、パスワードを聞かれずに
「hello」とechoコマンドの結果が返ってくれば、鍵認証接続成功です!!
(1回目はパスフレーズを聞かれるかも・・・)
C:\>"%SVN_SSH%" taiyakisan@lapislazuli echo hello hello
上記が成功したら、今度はTortoizeSVNでsvn+sshプロトコルで
リポジトリブラウザを見る等行ってください。
パスワードを聞かれずにリポジトリとやりとりができれば成功です。
うまく接続できない場合は・・・
OpenSSHの接続がうまくいかない場合は、以下のログに何か出ているかもしれません。
/var/log/messages
/var/log/secure
また私がやらかしたミスとして、公開鍵のファイルを直接編集して、
その過程で先頭の「s」が抜けてsh-rsa...となってしまい接続できないこともありました^^;
またパーミッションなどは忘れがちな部分となりますので、十分に見直してみてください。
参考サイト
PuTTY 0.60 ごった煮版
http://yebisuya.dip.jp/Software/PuTTY/
PuTTY で鍵交換方式による SSH 接続
http://www.kuins.kyoto-u.ac.jp/news/47/putty-gen.html
鍵交換方式によるssh接続
http://kazmax.zpp.jp/linux/lin_sshrsa.html
SSHを使ってパスワードなしで接続
http://ubuntu.u-aizu.ac.jp/004/index.html
入門OpenSSH
http://www.unixuser.org/~euske/doc/openssh/book/index.html