SSH -L ローカルポート転送で localhost が間違ったページを指す

SSH -L ローカルポート転送で localhost が間違ったページを指す

質問が馬鹿げているようで申し訳ないのですが、2つのことが理解できません。私が書いた例を実行していると仮定しましょうここ:

[...]ノートパソコンから接続したいhttp://www.ubuntuforumsSSH トンネルを使用して org に接続します。送信元ポート番号 8080 (代替 http ポート)、宛先ポート 80 (http ポート)、宛先サーバー www.ubuntuforums.org を使用します。:

ssh -L 8080:www.ubuntuforums.org:80 <host>

<host>をラップトップの名前に置き換える必要があります。

Q1: 実際にこれを使って何を実現できるのでしょうか? リモート サーバーでは sshd が利用できないため、トラフィックは暗号化されずに PC から送信されます。これは何のために必要なのでしょうか?

Q2: ssh -L 4444:linuxpl.com:80 localhostを実行しようとしています。http://localhost:4444私のウェブブラウザでは、LiteSpeed Web Server の内部サイトを見ることができます。他のページを試みると、Apache の内部サイトを見ることができます。他のページを試みると、このサイトの 404 ページが見つからないというメッセージが表示されます。ただし、一部は期待どおりに動作します。なぜこのようなことが起こるのでしょうか? どうすれば修正できますか?

答え1

Q1: そんなことはしたくないでしょう。このページの文言はおかしなものです。あなたが言ったように、トラフィックはあなたのコンピュータからあなたのコンピュータに暗号化されて送られ、その後完全に暗号化されずにフォーラム サイトへ送られます。別のコンピュータを使用してトラフィックを転送する、たとえばファイアウォールをバイパスする、という説明もできたはずです。

チュートリアルの意味は「フォーラムに接続したい」ということですを通して「別のマシンからラップトップを復元する」とすれば、もっと意味がわかります。

Q2: 開いた場合http://localhost:4444/あなたのマシン上では、フォーラムに HTTP 要求が行われますが、フォーラムにはlocalhostではなく のホストが必要であることが伝えられますlinuxpl.com。サーバーは、仮想ホストを使用しており、 と同じサイトにマップされていないため、必要な実際の仮想ホストではなく、デフォルトのページを返す可能性がlocalhostありますlinuxpl.com

つまり、全体的に、SSH トンネル経由で HTTP トラフィックを転送することは、多くの場合、それほど簡単には機能しません。どこかのプロキシに転送する方がはるかにうまく機能します。

ブラウザに適切なヘッダーを送信させるには、ホスト ファイルを設定して、ターゲット アドレスが自分のマシンであると主張することで成功する可能性があります。この方法では、ブラウザがアドレスを解決するときに、ローカル マシンに接続し、HTTP サーバーに適切なホスト名を伝えます。

次の行を追加して試すことができます

127.0.0.1        linuxpl.com

/etc/hostsへ

答え2

Q1: インターネットに接続できない環境でこれを使用しました。外部との接続を許可しないネットワークでラップトップを実行しているが、外部とラップトップがあるネットワークの両方に接続できるマシンが 1 台あるとします。そのため、ブラウズできるようにするには、このマシンに shh して、インターネット トラフィックが承認されたマシンを介して外部ネットワークに入るようにする必要があります。

接続は次のようになります。http://localhost:4444ssh はリクエストを受け取り、それをホストに送信します。ホストはそれを linuxpl.com:80 に送信します。ラップトップとホスト間の接続は ssh によって暗号化されますが、ホストとインターネット間の接続は暗号化されません。つまり、ssh は 2 台のマシン間でメッセージを転送および暗号化するだけです。

Q2: 何が問題なのかよく分かりませんが、ssh -L 4444:linuxpl.com:80 localhost は、自分のマシンと自分のマシンの間でトンネリングを行っているため、あまり意味がありません...

関連情報