コンテクスト
作業ワークフローを改善しようとしています。
現在、デスクトップ(基本的には GPU 搭載)とノートパソコンを持っています。ノートパソコンをリモートで操作しているときでもデスクトップを活用したいです(どちらも Linux を実行しています)。
私の大学では、外部接続に対してポート 80 のみが開かれています。
現在のソリューション
wanaddr:80 -> localaddr:22
私のデスクトップには SSH サーバーがあり、大学のネットワークの制限を回避するためにNAT でポート転送を行っています。
さらに、コードをデプロイし、IntelliJ IDE を使用してリモート インタープリターで実行していますが、うまく動作します。
問題
tensorboard
、、などのさらに多くのサービスをリモートで使用する必要がありますMLFlow
。WANjupyter
側でポート 80 を使用する必要があるため、他のポートをポート転送することができないという問題が発生します。
試みられた解決策
私のデスクトップのドメイン名が であると仮定しますdesktop.dev
。
特定のサブアドレスを正しいサービスにリダイレクトしようとしています。例:
ssh.desktop.dev:80 -> <?> -> localhost:22
tensorboard.desktop.dev:80 -> <?> -> localhost:8888
jupyter.desktop.dev:80 -> <?> -> localhost:8000
Caddy を使用しようとしましたが、後で HTTP リクエストのみをサポートしていることがわかりました。Traefik を調べていますが、簡単に実行する方法がよくわかりません。
正しい方向を指し示してもらえますか?
答え1
SSH ポート転送 (-L オプション) を使用します。自宅のマシンでは、ssh のみを公開します。どのポートに接続するかは関係ありません。80 が許容されます。自宅のマシンでは、ループバック デバイスでサービスを実行するか、少なくともループバックからサービスが利用できるようにします。
次に、ローミング ステーションから次のように接続します: ssh -p home-port home.address -L 8888:localhost:8888 -L 8000:localhost:8000 など。
(Windows の場合は putty でこれを行うことができます)
次に、ローミング ステーションで localhost に接続します。SSH クライアントは、トラフィックをホーム マシンの該当ポートにトンネルします。ローミング ステーションで localhost:8888 に TCP 接続すると、SSH クライアントはそれを受け入れ、ホーム マシンで localhost:8888 に接続してパケットをプロキシし、ローミング ステーションにホーム サービスが表示されるようになります。
-R オプションを使用して逆転送を行うこともできます。転送先が localhost ではなく、自宅からアクセス可能な他の場所である場合、ローミング ステーションから直接アクセスできない場所にアクセスできます: -L 7777:some.irc.server:6666、localhost:7777 への接続は some.irc.server:6666 に接続した場合と同じになります。
何をしても、有線経由では自宅とローミング ステーション間の SSH トラフィックのみが表示されます。