ISP ルータはポート転送を許可しないので、外部で RDP サーバを使用するためにポート転送の代わりに SSH を使用したいと思います。これが私の考えです:
A - client connecting to the RDP server
B - server
C - device running the RDP server
AがCに接続しようとしています。 Cへの直接接続は不可能であるため、すべてのトラフィックはBを通過する必要があります。
例:
Aは、「Hello world!」を含むパケットを送信します。 Cは「Test OK!」と答えなければなりません。 AのIPは255.255.255.255 BのIPは1.2.3.4です。 CのIPは4.5.6.7です。
したがって、255.255.255.255は1.2.3.4のソケットを開きます。 Aは「Hello world!」を送ります。 B はパッケージを C に渡します。 Cは「テスト成功!」と答え、Bに送り返す。 BはこれをAに送り返す。
RDPサーバーを使って同様のことをしたいと思います。
BはDebian 8を実行し、CはWindows 7を実行します。
ベストアンサー1
例では、クライアントAが実行されているオペレーティングシステムを指定していません。私はある種のコマンドラインSSHクライアントを使用できると仮定します。その後利用できます
you@A $ ssh -L54321:serverC:3389 serverB -p 12322 -l yourloginnameonB
トンネルを作成します。
このコマンドラインには説明が必要です。この部分をセクション別にしてみよう。
- -Lスイッチを使用すると、SSHはクライアントシステムA(プロンプトを参照)のポート54321とサーバーC(RDPサーバーが稼働していると仮定)のポート3389にトンネルを生成します。
- serverBは、このsshコマンドで「検索する」コンピュータの名前です。 B経由で接続しますので、ここにフルホスト名を入力してください。
- SSHサーバーBが標準以外のSSHポート(通常はインターネット接続コンピュータに推奨)を使用している場合は、その番号をここに-pパラメータとして入力してください。私の例では、BはSSHにポート12322を使用します。
- 最後に、-lパラメーターを使用すると、serverBにログインするときに使用するログイン名(つまりアカウント)を指定できます。
このコマンドが成功すると、AのRDPクライアントをlocalhost:54321として指定し、C:3389に直接接続されているように見せることができます。