Windows サーバーに SSH ポートフォワードで安全にリモートデスクトップをしたかったのですが, Windows に SSH サーバーをたてるのは少し面倒なので VMware Server で Ubuntu の仮想 SSH サーバーを作成してみました。
まずは仮想 SSH サーバーを構築します。
最初に OpenSSH をインストールします。
$ sudo aptitude install ssh
鍵交換方式でアクセスしたいので SSH サーバーを設定します。設定ファイルは /etc/ssh/sshd_config です。
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
PermitEmptyPasswords が意味のある設定なのかはよくわかりません。
鍵を作成します。
$ ssh-keygen -t rsa
$ mv id_rsa.pub authorized_keys # 既に authorized_keys があるなら cat id_rsa.pub >> authorized_keys
生成された秘密鍵 authorized_keys は自分しかアクセスできないようにして保護し, USB メモリなどで物理的に持ち運びます。
$ chmod 600 id_rsa $ cp id_rsa < 保存先>$ chmod 600 authorized_keys $ cp id_rsa < 保存先>
これで仮想 SSH サーバーはできました。次にホスト OS に対して SSH ポートへのアクセスがあったら仮想 SSH サーバーにポートフォワードするようにします。
まず前提として仮想 SSH サーバーの接続は NAT です。 VMware Server の Virtual Network Editor で NAT のタブを開き, NAT グループの Edit ボタンから NAT Settings ダイアログを開きます。 Settings グループの Port Forwarding ボタンでダイアログを開き, Incomming TCP Ports の Add で Host Port にホストが未使用の適当なポート番号を入力し, Virtual Machine IP Address に仮想 SSH サーバーの IP アドレスを入力し, Port に 22 を入力します。 Description は適当に SSH とでも入力すれば良いでしょう。
Host Port で指定したポートに TCP アクセスできるようにファイアウォールを設定します。 Windows ファイアウォールの場合はポートの追加で指定したポート番号と TCP を指定すれば良いです。
これでサーバーの設定は完了です。後はトンネルを掘ってクライアントから接続をします。
$ ssh -i < 鍵ファイル> -L < ローカルポート番号>:< 仮想ネットワークのゲートウェイ IP アドレス>:3389 -l < 仮想 SSH サーバーのユーザー>
$ rdesktop -a 16 localhost:< ローカルポート番号>
例えば SSH サーバーのユーザー名が digger, Windows の IP が 192.168.1.21,仮想ネットワークのゲートウェイが 192.168.2.2 で,ローカルのポート番号 13389 に接続したいなら次のようになります。
$ ssh -i id_rsa -L 13389:192.168.2.2:3389 -l digger 192.168.1.21
$ rdesktop -a 16 localhost:13389
上の例ではリモートデスクトップですが,もちろん他のマシンに対して SSH で接続することもできます。仮想サーバーなので一度設定してしまえば後はファイルをコピーしてしまえば他の場所でも使用できます。さすがに鍵は作り直した方が良いと思いますが。
仮想化技術って便利ですね。