TortoiseSVN で公開鍵を使う方法

  TortoiseSVN で svn+ssh を利用した場合に,認証をパスフレーズではなく公開鍵で行う方法を紹介します.

  SSH クライアントには TortoiseSVN 付属の TortoisePlink を使います.
  TortoisePlink は PuTTY 由来らしいので PuTTY 形式の鍵を使う必要があるみたいです.

  PuTTY 形式の鍵を生成したり,OpenSSH の鍵を PuTTY 形式に変換したりするために,PuTTYgen が必要になります.
  PuTTYgen は以下のサイトで入手できます.この記事の執筆時点の最新版は 0.58 です.

- PuTTY Download Page
  http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

1. 鍵を新たに作成する方法


  1. 鍵の生成
     PuTTY を起動し右中央部にある [Generate] を選択します.
     マウスをひたすら動かしていると,そのうち鍵が生成されます.

  2. 公開鍵をサーバに登録
     Public key for pasting into OpenSSH authorized_keys file の部分をコピーして
     $HOME/.ssh/authorized_keys に貼り付けます.
     
     $HOME/.ssh/authorized_keys がない場合は作成しましょう.

  3. 秘密鍵の保存
     右中央部にある [Save private key] を選択します.
     PuTTY の秘密鍵の拡張子は ppk になります.ここでは

   C:\keys\svn.ppk

     として保存します.
     秘密鍵のパスフレーズは,同じ画面の「Key passphrase」で設定します.

  4. TortoiseSVN で公開鍵を使うように設定
    「TortoiseSVN 設定」の「ネットワーク」を開きます.
    「SSH クライアント」に TortoisePlink を選択して,先ほど作成した秘密鍵を以下のように指定します.

   TortoisePlink -C -l username -i C:\keys\svn.ppk

     username はユーザ名です.-C オプションは圧縮を有効にするオプションです.
     

  以上が,鍵を新たに作成した場合の TortoiseSVN で公開鍵を使う方法になります.

2. 既にある OpenSSH の鍵を PuTTY 形式に変換する方法


  1. 鍵の変換
     PuTTY を起動し右中央部にある [Load] を選択します.
     秘密鍵にパスフレーズが設定してある場合は,パスフレーズの入力画面が表示されるので,パスフレーズを入力します.

     すぐに PuTTY 形式の鍵に変換されます.

  2. 秘密鍵の保存および TortoiseSVN で公開鍵を使うように設定
     上記「1. 鍵を新たに作成する方法」の「3. 秘密鍵の保存」からの手順と全く同じになります.

  以上が,OpenSSH の鍵を PuTTY 形式に変換した場合の TortoiseSVN で公開鍵を使う方法になります.

3. 確認

   試しに,コミットログを表示するなどしてみてください.
   パスフレーズによる認証のときは,以下のように「Password」という入力画面が表示されました.

   Password

   しかし,公開鍵認証の場合は,以下のように「Passphrase for key "..."」という入力画面が表示されます.

   Passphrase

- tortoisesvn.tigris.org
  http://tortoisesvn.tigris.org/