web-dev-qa-db-ja.com

Linuxからsshトンネルチェーンを介したRDP

私はLinuxラップトップを使用していて、2つの(!)Linuxサーバー(server1、server2)の背後にあるWindowsワークステーションにアクセスしようとしています。そのうちserver1のみが外部からアクセスでき、server2のみがワークステーションにアクセスできます。

Linux -> server1 -> server2 -> windows:3389

Windowsマシンへのリモートデスクトップ接続を取得しようとしています。

ラップトップで実行することにより、sshをサーバー2に転送できるトンネルを設定することができました。

ssh -f -N -L 2001:server2:22 server1

そして接続する:

ssh -p2001 localhost

したがって、これにより、ローカルポート2001からサーバー1を経由してserver2:22へのトンネルが作成されます。また、これを介してsftpを実行することもできたので、コンソールを使用するのではなく、ファイルマネージャーウィンドウから直接server2のデータにアクセスできます。

sftp://localhost:2001

住所行で。

素晴らしい、今次のレベルに。 server1で実行しました:

ssh -f -N -L 2222:windows:3389 server2

これにより、Server1のポート2222がワークステーションのRDPポートに接続されます。さて、RDPソフトウェア(RemmimaとKRDCを試しました)をServer1:2222に転送して、それで済ませることはできませんか?残念ながら、これは何もしません(接続がタイムアウトします)。 Remminaにはトンネリングのオプションがありますが、この状況でそれらが私を助けることができるかどうかについて私は完全に混乱しています。

だから:私は何が間違っているのですか?

2
Zak

さて、RDPソフトウェア(RemmimaとKRDCを試しました)をServer1:2222に転送するだけではいけません。

いいえ、sshはデフォルトでポート転送をローカルホストインターフェイスにバインドするため、「外部から」ポートにアクセスすることはできません。

外部インターフェイスをバインドする必要があります。これにより、server1を表示するすべてのユーザーが内部Windowsサービスにアクセスできるようになります。これは、server1のsshconfigのGatewayPortsオプションも微調整する必要があります。

ssh -f -N -L server1:2222:windows:3389 server2

または、たとえばコンピュータから次のように、もう一度直接マシンにトンネリングする必要があります。

ssh -fNL 2222:localhost:2222 server1

次に、localhost:2222に接続します。

3
Jakuje