
私が間違っていなければ、ポート 80 の Web サーバーへのポート 80 の SSH トンネルにより、ポート 80 がそのサーバーをトンネルできるはずですよね? ただし、トンネルを設定して Web サイトにアクセスすると、ログはサーバーの IP ではなく、自宅のコンピューターから送信されたように見えます。なぜかわかりますか?
次のコマンドを使用しますが、ターミナルでホストに SSH 接続するだけのように見えます。
ssh root@webserver -L 80:127.0.0.1:80
答え1
これを試してみたところ、動作していることが確認できました:
ssh -ND 8080 [email protected]
ローカル ポート 80 は予約済みポートであるため (8080 は一般的な代替ポートです)、マシン上のローカル ポート 80 をバインドするには、ルートが必要です。ブラウザー トラフィックのみを転送するには、Firefox / Chrome / Whatever で Socks プロキシ "localhost" を "8080" で使用するように設定できます。
ルートなしで試してみてください。ルートアクセス権のない Web サーバーでも動作します。
答え2
トンネルが設定されたら ( を使用-L
)、使用する URL を変更する必要があります。たとえば、http://127.0.0.1/
または仮想ホスティングの設定によりサイト名が一致する必要がある場合は、それをデスクトップの hosts ファイルに追加する必要があります。
127.0.0.1 www.domain.com
サーバー vhost にエイリアスを定義して、127.0.0.1 に「test.domain.com」のような名前を 1 つ使用し、実際の名前を直接使用することもできます (これが役に立つ場合)。hosts ファイルからエントリを削除し忘れると、混乱が生じる可能性があります。サイトの動作方法によって異なります。
ポート 80 を転送するには、Web サーバーではなくデスクトップ上でルートになる必要があります。root の ssh ログインを許可しないことを強くお勧めします。
非特権ポートの使用5月作業はサイトによって異なります:
ssh user@webserver -L 1080:127.0.0.1:80
URL を使用してくださいhttp://127.0.0.1:1080/
。
提案されたSOCKSプロキシ(-D
)を使用する5月SOCKS/DNS/ファイアウォール/NAT の設定によっては、予期せぬ事態が発生する可能性があります。
(Linuxでは、予約ポートのルート権限の代わりにPOSIX機能を使うことができます。https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-lただし、OpenSSH の標準バージョンでは、定義済みでコンパイルしない限り、ポート番号に対する追加のハードコードされたチェックがあるため、これは機能しませんNO_IPPORT_RESERVED_CONCEPT
。リンクされた質問の回答には、これに対するさまざまな他の解決策が記載されています。