web-dev-qa-db-ja.com

SOCKSプロキシからHTTPプロキシの背後にあるSSHサーバー

他の場所のコンピューターBに対してポート9090でSOCKSプロキシーをセットアップしました。

ssh -D localhost:9090 user@B

ローカルGoogle Chromeブラウザで設定しました。ただし、コンピューターBはHTTPプロキシの背後にあるため、ローカルで発信されたHTTP要求はSOCKSプロキシを介してコンピューターBに到達しますが、アドレス指定できません(ssh -D localhost:9090 user @ Bを実行している端末は「open failed:connect failed:Noそのようなリクエストが行われた場合のホストへのルーティング」)。

私が試してみました:

  1. google ChromeでリモートHTTPプロキシ(コンピューターBの背後)とSOCKSプロキシの両方をセットアップし、
  2. 環境変数http_proxyを適切に設定してssh -D localhost:9090 user @ Bを実行し、
  3. コンピューターBのユーザーの.bashrcにhttp_proxy = _proxy_address_を追加します。

しかし、どれも機能しませんでした。

コンピュータBの背後にあるHTTPプロキシを考慮に入れるために、SOCKSプロキシを構成する方法は誰でも知っていますか?サーバーでのSSHDまたはグローバル構成の変更を伴わない方法が望ましいでしょう。

4

組み込みのSOCKSサーバーを使用するよりも、SSH経由でリモートネットワークのプロキシサーバーを「転送」する方がはるかによいでしょう(もう一方の端に裸のゲートウェイアドレス指定可能なネットワークが必要です)。

ssh -L 8080:internal_ip_of_proxy:8080 user@ssh_server

これにより、プロキシサーバーがローカルに公開され、ブラウザのプロキシ設定をlocalhost:8080に設定でき、SSHを介してリモートプロキシにトンネリングされます。

また、これを任意のリモートサービスに適用できます。たとえば、サーバーからImgurをトンネルできます(実質的に単一ホストプロキシ)。

ssh -L 8080:imgur.com:80 user@ssh_Host

そして、ローカル端末上で:

curl --header 'Host: imgur.com' localhost:8080

それ以外の場合、curlは存在しないlocalhostサイトを要求します。 /etc/hostsに行を追加し、imgur.com127.0.0.1に解決することで回避することもできます。あなたの目的。

4
Oli