
コマンドを使用してSSHローカルポート転送を有効にしましたssh -NL 8080:whatsmyip.org:80 <remote-sshd-machine>
。 Firefoxを開いてに移動すると、http://127.0.0.1:8080
Webページは開かれません。ただし、Firefoxネットワーク設定メニューでHTTPプロキシ127.0.0.1
とポートを設定すると、Web8080
ページが開き、whatsmyip.orgは期待どおりにリモートSSHサーバーのIPアドレスを報告します。正しく機能するためにブラウザでプロキシ設定を構成する必要があるのはなぜですか?
答え1
リモートSSHサーバーをブラウザのSOCKSプロキシとして使用する場合は、探しているsshコマンドは次のとおりです。
ssh -N -D8080 <remote-sshd-machine>
これにより、ローカルホストTCPポート8080でSOCKSv4 / 5プロキシが起動します。これにより、リモートSSHサーバーのIPアドレスを使用してすべてのWebサイトを閲覧できます。ただし、localhostを介してリモートサイト(例:whatsmyip.org)にアクセスする場合は、次の点に注意してください。
- リモートサーバーは次のことを行う必要があります。いいえ名前ベースの仮想ホスティングを使用します。名前ベースの仮想ホスティングは、同じIPアドレスに複数の異なるサイト(example.comやexample.orgなど)を配置します。 example.com と example.org は両方とも同じ IP で解決されるため、サイト間の区別はブラウザに提供された URL でのみ行われます。あなたの場合、リモートサーバーはURLを見ていますが、これは
http://localhost
エラーを生成したり予測できないことを行うことができます(Apacheはこれを行う傾向があります!)。なぜなら、名前リストの「localhost」ドメイン名を認識しないからです。仮想ホスト - リモートサーバーは、ポート番号が80から8080に変更されたことを無視する必要があります。通常、ほとんどの静的HTMLサイトとWebサーバーはこれを無視しますが、一部のサーバーとWebアプリケーションはユーザーをポート80にリダイレクトしようとし、問題が発生する可能性があります。
上記を本当にエミュレートしたい場合(これを徹底的にテストしておらず、sshをrootとして実行する習慣を持つことをお勧めしません!)、次のことを試してください。
sudo ssh -N -L 127.0.0.1:80:whatsmyip.org:80 <remote-sshd-machine>
sshクライアントは1024未満で特権ポートと見なされるポート80でリッスンするように要求し、ルート所有プロセスのみがこれらのポートにバインドできるため、上記のsudoが必要です。さらに、クライアント側のポート80では他のサービス(Webサーバーなど)を実行できません。その場合は、このコマンドを試す前にサービスを停止してポート80をオフにする必要があります。
次に、/etc/hostsに次の行を追加します。
127.0.0.1 whatsmyip.org www.whatsmyip.org
最初のコマンドは、ローカルコンピュータ(SSHクライアント)のTCPポート80をWhatsmyip.orgのポート80に転送します。ホストファイルはブラウザを使用してwhatsmyip.orgを要求したときに名前がローカルホストとして解決されるようにします。これにより、ブラウザがSSHトンネルを介してWhatsmyip.orgに送信するポート番号とホスト名を保持できます。トンネルが機能しているかどうかはどうすればわかりますか? Whatsmyip.orgは、クライアントのIPアドレスではなく、SSHサーバー(リモートSSHdシステム)のIPアドレスを報告する必要があります。