前回はWindows Web Server 2008 R2にFreeSSHdをインストールするところまで実施しました。
Windows Web Server 2008 R2を外部からリモートアクセスするには その1 >> sa-sa-ki.jpのblog
今回はインストールしたFreeSSHdの設定を行います。
FreeSSHdのインストール時にWindowsサービスとして登録しましたのでインストール終了直後にはサービスが起動した状態になっていますが、設定変更を行うのでサービスを止めておきます。
管理ツール([スタートアップ]-[コントロールパネル]-[システムとセキュリティ]-[管理ツール])から[サービス]を起動します。

[FreeSSHDService]を選択したら右クリックして[停止(O)]をクリックします。

FreeSSHdのサービス停止が完了したら、設定画面より設定を行います。
エクスプローラを起動してFreeSSHdインストールフォルダ(C:\Program Files (x86)\freeSSHd)にある FreeSSHDService.exe ファイルを右クリックし[管理者として実行(A)]をクリックします。

デスクトップ右下のタスクトレイにFreeSSHdのアイコンが表示されるので、ダブルクリックするか右クリックして[Settings]をクリックします。

FreeSSHdの設定画面が表示されたら[SSH]タブをクリックします。
Listen addressを0.0.0.0(All interfaces)からWindows Web Server 2008 R2のIPアドレスに変更します。

RSA Keyの[New]ボタンをクリックし、2048bitを選択します。

公開鍵ファイルの名前をSSH接続ユーザーと同じ名前にして(ここでは仮にsshuserとします)FreeSSHdインストールフォルダに保存します。

[適用(A)]ボタンをクリックするとSSHサーバー再起動ダイアログが表示されるので[はい(Y)]ボタンをクリックします。

次に[Authentication]タブをクリックします。
Password authentication のオプションを[Disabled]に変更して[適用]ボタンをクリックします。
※ちなみにPublic key folderのパスは公開鍵ファイルを格納しているフォルダを指定します
今回はFreeSSHdインストールフォルダに公開鍵ファイルを保存しているので変更の必要はありませんが、もし別のフォルダに公開鍵ファイルを保存した場合はこのパスも変更してください

[Tunneling]タブをクリックします。
Allow local port forwarding のチェックをして[適用(A)]ボタンをクリックします。

[Logging]タブをクリックします。
[Log events]のチェックと[Resolve IP addresses into hostnames]のチェックをして[適用(A)]ボタンをクリックします。

[Users]タブをクリックします。
[Add]ボタンをクリックし、User propertiesダイアログにログイン情報を入力して[OK]ボタンをクリックします。
Login: sshuser
Authorization: Public key(SSH only)
User can use: Shell、SFTP、Tunnelingにチェックをします。

入力したログインユーザーが反映されている事を確認して[OK]ボタンをクリックします。

タスクトレイのFreeSSHdのアイコンを右クリックして[Unload]をクリックし、停止してあったFreeSSHdのサービスを再び開始してください。
次に秘密鍵と公開鍵を作成します。
先ほどFreeSSHdの設定画面で作成した公開鍵はペアにある秘密鍵がないのとパスフレーズも含まれていないと思われるため、別途秘密鍵と公開鍵を作成する必要があります。
もしMac OS XやUbuntu、Fedora、CentOSなどLinux環境がある場合は以下のようにコマンドを入力して秘密鍵と公開鍵を作成できます。
※Ubuntuで実施した例になります
ubuntu@ubuntu-desktop:~$
ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
秘密鍵の保存場所を入力します
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
何も入力せず[Enter]キーのみ押す
パスフレーズを登録します
Enter passphrase (empty for no passphrase):
sshuserユーザーに付与したいパスフレーズを入力
Enter same passphrase again:
sshuserユーザーに付与したいパスフレーズを再度入力
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
5b:d9:c7:7f:ae:ca:31:00:46:d0:18:24:74:14:05:71 ubuntu@ubuntu-desktop
The key's randomart image is:
+--[ RSA 2048]----+
| .ooXXE |
| o.o. |
| o |
| . . o . |
| S + . o |
| o . . . |
| . o o|
| . o ..|
| o....|
+-----------------+
秘密鍵と公開鍵を確認します
ubuntu@ubuntu-desktop:~$ ls -l .ssh
合計 12
-rw------- 1 ubuntu ubuntu 1751 2010-01-07 11:52 id_rsa ←秘密鍵
-rw-r--r-- 1 ubuntu ubuntu 403 2010-01-07 11:52 id_rsa.pub ←公開鍵
-rw-r--r-- 1 ubuntu ubuntu 2418 2010-01-04 17:35 known_hosp
Thd
Linuxの環境がない場合やLinuxの操作がよくわからない場合はWindowsのTeraTermを使って秘密鍵と公開鍵を作成する方法をご紹介します。
ここではTeraTermのインストール方法は割愛します。
以前、flashcastのブログに自宅サーバー構築時に書いたブログを参考にしてください。
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
またTeraTermはクライアント用Windowsにインストールした前提で話を進めます。
TeraTermのインストールが終わったらTeraTermを起動します。
新しい接続ダイアログが表示されるかと思いますが[キャンセル]ボタンをクリックしてダイアログを閉じます。

TeraTermのメニューバーより[設定(S)]-[SSH鍵生成(N)]を選択します。
TTSSH: 鍵生成ダイアログが表示されたら鍵の種類RSA、ビット数 2048 にして[生成(G)]ボタンをクリックします。

鍵の生成が終わると鍵のパスフレーズを入力できるようになるので登録したいパスフレーズを入力し、[公開鍵の保存(C)]ボタンと[秘密鍵の保存(P)]ボタンをそれぞれクリックして公開鍵ファイルと秘密鍵ファイルをそれぞれ保存します。

公開鍵ファイルと秘密鍵ファイルを保存したら[キャンセル]ボタンをクリックします。
秘密鍵(id_rsa)と公開鍵(id_rsa.pub)ができあがったら、秘密鍵はSSHサーバーに接続するクライアント側へ公開鍵はSSHサーバーへそれぞれ移動します。
※公開鍵(id_rsa.pub)はファイル名をsshuserに変更して、Windows Web Server 2008 R2の C:\Program Files (x86)\freeSSHd に上書きコピーしてください。
■2011/08/16追記
手順通り設定したけどSSHサーバーに接続できませんというご指摘をTwitterでいただきましたので、Windows Server 2008 R2を余っているPCにインストールして確認したところ別のPCからの接続ができない事を確認いたしました。
原因はWindows ServerのファイアウォールでSSHポートの接続許可設定の手順が漏れていた事によるものでした。
@s2homepageさん、ご指摘ありがとうございます。
それではファイアウォールの接続許可設定の手順をご紹介いたします。
スタートアップメニューから[コントロールパネル]を選択します。

[ファイアウォールの状態の確認]を選択します。

[詳細設定]を選択します。

左ペインの[受信の規則]を選択したら、右ペインの[新しい規則]を選択します。

[ポート]を選択して[次へ]ボタンをクリックします。

[TCP]と[特定のローカルポート]を選択し、ポート番号22を入力して[次へ]ボタンをクリックします。

[接続を許可する]を選択して[次へ]ボタンをクリックします。

[次へ]ボタンをクリックします。

規則の名前と説明を入力して[完了]ボタンをクリックします。
※何でもよいのですがSSHポートの接続許可設定なので名前欄にSSHと入力しておきます

受信の規則の一覧に設定した規則名(この例ではSSH)が登録されていれば設定完了です。

TeraTermのメニューバーより[設定(S)]-[端末(T)]を選択します。
端末の設定ダイアログが表示されたら「漢字-受信(K)」および「漢字-送信(J)」を[SJIS]に変更して[OK]ボタンをクリックします。

TeraTermのメニューバーより[ファイル(F)]-[新しい接続(N)]を選択します。
新しい接続ダイアログが表示されたらTCP/IPのホストにWindows Web Server 2008 R2のIPアドレスを入力して[OK]ボタンをクリックします。

セキュリティ警告が表示されたら[続行(C)]ボタンをクリックします。

SSH認証の認証情報として
ユーザ名:sshuser
パスフレーズ:登録したパスフレーズ
RSA/DSA鍵を使う:作成した秘密鍵ファイル
を入力/選択して[OK]ボタンをクリックします。

接続できました。

接続できない場合はWindows Web Server 2008 R2を再起動するといいらしいのですが、再起動しなくても接続できたって人もいるしどっちが正しいのでしょうか・・・。
yasuは設定しながら何度かWindows Web Server 2008 R2を再起動しちゃっていて、再起動しなくても接続できるかわかんなくなっちゃいました。
次回はポートフォワードしてリモートデスクトップ接続します。