はじめに
Google Cloud上にWindowsサーバを構築し、リモートデスクトップを試みた際、社内のFWでブロックされ接続に失敗する事象が発生しました。FWの穴あけには時間を要するため、他の手段を考えなければいけません。
あなたならどのような方法で対処しますか?
SSHポートフォワーディングの利用
対応方法としてSSHポートフォワーディングの利用が考えられます。
SSHポートフォワーディングとは、SSHによる安全なトンネルを通じて、指定したポートを利用しトラフィックを転送する技術です。
ローカルポートフォワーディング、リモートポートフォワーディング、ダイナミックポートフォワーディングの3種の接続方式が存在しますが、今回はローカルポートフォワーディングを利用します。これは接続元であるローカル端末の指定ポートから、SSH接続先の指定ポートに通信を転送する手法です。
構成イメージとして、ローカル端末と接続ターゲットのWindows Server間に新たにサーバを追加します。
本構成に関する前提条件は以下の通りです。
- 社内FWでSSH(TCP22)が禁止されていない
- サーバA-B間に疎通性があり、サーバAからサーバBに対するRDP(TCP3389)が許可されている
- サーバAにてSSH接続用の公開鍵と秘密鍵が作成されており、秘密鍵がローカル端末側に保存されている
設定方法
まずローカル端末からPowerShellを開きサーバAにSSH接続し、RDP用ポートをフォワードします。これにより、サーバA経由でサーバBにRDP接続が可能になります。
ssh -L 13389:<サーバBの内部IPアドレス>:3389 -i <ローカル端末内の秘密鍵の保存パス> <ユーザ名>@<サーバAの外部IPアドレス>
-
-L
オプションでローカル端末のポート13389
を、踏み台を経由して接続先のポート3389
に転送します
※ローカル端末用のポート13389
は、ユーザーポート(1024~49151)の中で未割当のものであれば変更可能です -
-i
オプションで秘密鍵のファイルを指定します
次にローカル端末からリモートデスクトップを開き、localhost:13389
と入力し接続します。RDPの接続に必要なユーザ名/パスワードは以下の方法をもとに設定します。
これで接続できるはずです。
終わりに
いかがだったでしょうか。セキュリティポリシーが原因で本来意図していた通信が阻まれるケースは多々あります。今回の構成案をもとに解消のお役に立ていただければ嬉しいです。
参考