SOCKS를 통해 SSH를 통해 HTTP를 터널링하는 방법은 무엇입니까? 프록시 :

이것은 해결해야 할 간단한 문제이지만 어떤 이유로 든 작동하지 않습니다.

ssh vps 잘 작동합니다 (인증 키를 사용합니다)

다음 명령으로 터널을 설정했습니다.

ssh -C2TNv -D 8080 vps

그런 다음 Firefox 네트워크 설정을 수정하십시오.

  • 수동 구성
    • http 프록시 : localhost, 포트 : 8080
    • 모든 프로토콜에이 프록시 서버 사용
    • 양말 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가있는 사이트를 방문하면 “연결이 재설정되었습니다”라는 오류가 표시됩니다.



답변

-D를 사용하는 SSH 명령은 훌륭합니다 (SOCKS는 HTTP를 통해 SOCKS에 연결하는 것만 터널링하므로 정렬해야합니다)

나는 좋은 결과를 얻는다.

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

하지만 내가하면 같은 결과가 나옵니다.

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

그래서 파이어 폭스는 마치 HTTP 프록시 인 것처럼 연결합니다.

파이어 폭스 창을보고

수동 구성 예

“모든 프로토콜에이 프록시 서버 사용”을 선택했다는 것은 완전히 잘못된 동작입니다! SOCKS 프록시를 입력하려고하면 SOCKS 상자가 널 / 회색으로 표시되고 HTTP 프록시 만 입력 할 수 있습니다.

틱하지 마십시오.

그리고 양말 프록시 IP를 입력하십시오.

127.0.0.1, localhost의 프록시가없는 곳을 제거하십시오. 그것이 그것이 기본값이라고 말합니다.


답변

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


답변