web-dev-qa-db-ja.com

IntelliJから動作中のsshトンネルを介してポートに接続しますか?

リモートのUbuntu14.xサーバーにあるサーバーアプリで作業しています。そのアプリは、リモートボックスのポート8000​​でリッスンしています。私は適切なSSHセッションを持っているので、ボックスにトンネリングされ、Sudo機能もあります。

私のオフィスのローカルLinuxシステムにIntelliJがあり、それもubuntu14.xを実行しています。 IntelliJリモートデバッグセッションのために、リモートボックスのポート8000​​に接続する必要があります。リモートボックスのポート8080は公開されていません。

IntelliJが接続するためのシステム上のローカルポートを提供し、そのポートとの間でトラフィックをプロキシ/転送するユーティリティ、IPテーブルトリック(リモートボックス上)、SSHトリックなどはありますか?リモートシステムのポート8000​​へのSSHトンネル?言い換えると、ローカルボックスのIntelliJは、実際にはそれらの間の接続がアクティブなSSHトンネルを経由しているのに、リモートボックスのサーバーアプリと直接通信していると見なしますか?

ずっと前にこのようなことをしたことを覚えていますが、その方法を完全に忘れていました。当時、リモートクライアントはWindowsボックスだったので、解決策はWindowsシステム用でした。今回は、ローカルシステムとリモートシステムの両方がUbuntu14.xサーバーです。

2
Robert Oschler

ローカルマシンにフォワードトンネルを設定する

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000はIntelliJが接続するものであり、Webアプリはローカルマシンで実行され、すべてのローカルインターフェイスにバインドされ、ポート8000​​で実行されていると見なされます。

localhost:8000は、リモートボックスのコンテキストでトンネルが接続する場所です。 localhostは、作業中のlocalhostではなく、リモートボックスマシン内のlocalhostインターフェイスです。そこで、ユーザーusernameのコンテキストから、事実上Webアプリであるポート8000​​に接続します。

autosshsshのラッパーであり、接続が切断された場合に自動的に再接続します。

リモートボックスのsshに非標準のポートを使用している場合は、-P <PORT>パラメーターを使用して接続します。

上記があなたが望むことをしないならば、この答えは一見の価値があります: https://unix.stackexchange.com/a/118650/61956 そこから私はちょうどあなたに最初の図を説明しました。ローカルポートの前にインターフェイス0.0.0.0を付けました。省略した場合、デフォルトでlocalhostになると思います。これは、必要に応じて実行できます。 localhostがデフォルトの場合、ネットワーク上の誰もあなたのマシンを使用してそのsshトンネルを使用できないため、0.0.0.0:部分を削除する方が安全な場合があります。それ以外の場合、192.168.10.10:8000が作業中のマシンのIPである場合、192.168.10.10はリモートWebアプリへのエントリポイントになります。

3
Daniel F