Linuxのsshdは、実はSSH転送という機能がありまして、DMZにsshd接続できるLinuxサーバーがあれば、内部のWindowsサーバーにVPN接続のようなSSH転送という接続が出来るのをご存知でしょうか?
VPNクライアントが無くてもSSHDで似たようなトンネル接続が実現できます。
以下のような環境で、説明します。
レジュメ
環境・前提条件
- DMZ上にssh接続が可能なLinux (centos7)
- 内部ネットワークに外部接続していないWindows Server 2016 (centosからは通信が出来る)
という環境で、Windowsサーバーにリモートデスクトップアクセスさせる方法になります。
LinuxのSSHD経由でWindows RDP接続手順説明
パソコンから、Windowsサーバーに直接RDP接続出来ているように見えますが、実際はもちろん直接接続しているわけでは無く、ネットワーク接続的には
- パソコン→LinuxへSSH接続のセッション
- Linux→Windowsサーバーへ3389(RDP)接続のセッション
そのセッションの中を、パソコンからの通信がトンネルしているようなイメージにします。
1、パソコンからLinuxにSSH接続する
まずは、LinuxのグローバルIPアドレスにいつも通りTera TermでSSH接続しログインします。
今回はAWS上のLinuxで、Linuxのアドレスは
- グローバルIPアドレスは18.x.x.x
- ローカルIPアドレスが10.x.x.x
です。
※ netstatは最終的にRDP接続した時の情報です。
LinuxとWindowsサーバーのRDPセッションということがわかりました。
2、Tera Term内でSSH転送設定をする。パソコンのlocalhostにポートバインド
パソコン上のSSH接続したTera Term画面の「設定」から「SSH転送」をクリックします。
SSHポート転送画面に
- ローカルのポート:パソコンのローカルアドレスにWindows RDPをマッピングするためのポートアドレス
- リモート側ホスト:Windows サーバーのローカルアドレス
- ポート:Window サーバーのリモートデスクトップポート(3389)
を入力し、OKボタンを押します。
さらにOKボタンを押します。
3、パソコンのlocalhost:ポートへRDP接続(リモートデスクトップ接続)する
2番の操作で、パソコンのlocalhost(127.0.0.1)に先ほど設定した「ローカルのポート」(13389)でポートがListenされたことが確認できます。
こちらのポートに対し、パソコンからリモートデスクトップ接続をすると
パソコンからWindowsサーバーにまるで直接リモートデスクトップ接続できてるかのように
SSH接続を経由してポートがリダイレクトされます。
パソコンから直接接続出来ないWindowsサーバーへ接続出来ていることを確認してみてください。