SOCKS経由でHTTP over SSHをトンネルする方法は?


21

これは簡単に解決できる問題ですが、何らかの理由でうまくいきません。

ssh vps 正常に動作します(認証キーを使用します)

次のコマンドでトンネルを設定します。

ssh -C2TNv -D 8080 vps

次に、Firefoxのネットワーク設定を変更します。

  • 手動設定
    • httpプロキシ:localhost、ポート:8080
    • すべてのプロトコルにこのプロキシサーバーを使用する
    • SOCKS v5
  • about:config
    • network.proxy.socks_remote_dns:true

ターミナル出力:

$ ssh -C2TNv -D 8080 vps
OpenSSH_6.0p1, OpenSSL 1.0.1a 19 Apr 2012
debug1: Reading configuration data /home/ting/.ssh/config
debug1: /home/ting/.ssh/config line 47: Applying options for vps
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to vps.server.com [1.1.1.1] port 22.
debug1: Connection established.
debug1: identity file /home/ting/.ssh/id_rsa type 1
debug1: identity file /home/ting/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6+squeeze1
debug1: match: OpenSSH_5.5p1 Debian-6+squeeze1 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 zlib@openssh.com
debug1: kex: client->server aes128-ctr hmac-md5 zlib@openssh.com
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA <removed>
debug1: Host 'vps.server.com' is known and matches the RSA host key.
debug1: Found key in /home/ting/.ssh/known_hosts:10
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/ting/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (publickey).
Authenticated to vps.server.com ([1.1.1.1]:22).
debug1: Local connections to LOCALHOST:8080 forwarded to remote address socks:0
debug1: Local forwarding listening on ::1 port 8080.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 8080.
debug1: channel 1: new [port listener]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

次に、Firefox、SSH出力を使用してサイトにアクセスしてみます。

debug1: Connection to port 8080 forwarding to socks port 0 requested.
debug1: channel 2: new [dynamic-tcpip]
debug1: channel 2: free: dynamic-tcpip, nchannels 3
debug1: Connection to port 8080 forwarding to socks port 0 requested.
debug1: channel 2: new [dynamic-tcpip]
debug1: channel 2: free: dynamic-tcpip, nchannels 3

プロキシは動作しているように見えますが、Firefoxを使用してサイトにアクセスすると、「接続がリセットされました」というエラーが返されます。


カールしてみましたか?$カール--socks4 127.0.0.1:8080 何とか
barlop

回答:


27

-Dを使用したSSHコマンドは問題ありません(SOCKSは、HTTPを介してSOCKSに接続するだけなので、整理する必要があります)

良い出力が得られます

curl --socks5 127.0.0.1:8080 http://blah

しかし、私があなたが得る場合と同じ間違った出力を得る

 curl --proxy 127.0.0.1:8080 http://blah

したがって、FirefoxはHTTPプロキシのように接続しています

Firefoxウィンドウを見る

手動設定YES

「すべてのプロトコルにこのプロキシサーバーを使用する」にチェックを入れたと言いますが、これはまったく間違った動きです。SOCKSプロキシを入力します。入力すると、SOCKSボックスが無効/グレー表示になり、HTTPプロキシのみを入力できます。

だからそれをチェックしないでください。

そして、ソックスプロキシIPを入力します。

127.0.0.1、localhostのプロキシがないという箇所を削除します。それがそれを言う場合、これはデフォルトです。


14
答えてくれてありがとう。しかし、Firefoxのプロキシ設定画面でフィールドを除くすべてのものをクリアすることで機能しました。フィールドに何かを追加すると、機能しなくなりました。SOCKS HostHTTP Proxy
12

@wtingまたは@ barlop、sshフラグの説明を求めることができませんでした-C2TNか?
マイクHR 14

1
@ MikeH-R私はそれに慣れていないが、-C2 -T -N -vに分解されるだろう。man sshを見ると、-C2は圧縮に関係しているように見えます。-Cは圧縮を行い、レベルの包含に言及しています。-彼がしたC2。-Tまたは-Nまたは-Tと-Nの両方は、通常、ポート転送を使用してsshを実行するときにcmdプロンプトを開き、シェルを使用するという意味でsshを単純化することと関係しています。それが起こるので、シェルなしで望んでいるポート転送機能を持っているだけです。-vは冗長です。(ただし、詳細な-vvvが必要な場合、つまり3つを使用した方がよい場合)
barlop 14

@barlopに感謝します。ドキュメントから少しクリアしました。
マイクHR 14

@ MikeH-R問題はありませんでした。今調べたとき、私はまだ興味がありました!
barlop

1

curlを介した接続を確認するには、フラグを使用することもできます-I -v(HTTPヘッダーのみを取得し、よりおしゃべりな出力を取得するため)。

これらのフラグが選択され、カール接続している場合-次のような出力文字列が表示されます。

* Rebuilt URL to: http://www.google.ru/
*   Trying ::1...
* 87
* 245
* 198
* 44
* Connected to localhost (::1) port 8080 (#0)

接続できない場合:

* Rebuilt URL to: http://www.google.ru/
*   Trying ::1...
* connect to ::1 port 8080 failed: Connection refused

ssh接続のある別の端末のタブでは、次のようになります。

debug1: channel 2: new [dynamic-tcpip]
debug1: channel 2: free: direct-tcpip: listening port 9999 for 87.245.198.44 port 80, connect from ::1 port 55034 to ::1 port 8080, nchannels 3
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.