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


21

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

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가있는 사이트를 방문하면 "연결이 재설정되었습니다"라는 오류가 표시됩니다.


당신은 컬을 시도했다. $ curl --socks4 127.0.0.1:8080 blah
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

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

파이어 폭스 창을보고

수동 구성 예

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

틱하지 마십시오.

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

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


14
답변 해주셔서 감사합니다. 그러나 나는 밖으로 취소하여 작업을 가지고 모든 파이어 폭스의 프록시 설정 화면을 제외하고SOCKS Host 필드. HTTP Proxy필드 에 아무것도 추가하면 작동이 중지되었습니다.
wting

@ wting 또는 @barlop에서 ssh 플래그에 대한 설명을 요청할 수 없었 -C2TN습니까?
Mike HR

1
@ MikeH-R 나는 그것에 익숙하지 않지만 -C2 -T -N -v로 세분화됩니다. man ssh를 보면 -C2는 압축과 관련이있는 것처럼 보입니다. -C는 압축을 수행하며 레벨을 포함하는 것을 언급합니다. 그가 한 C2. -T 또는 -N 또는 -T 및 -N은 일반적으로 포트 전달을 사용하여 ssh를 수행 할 때 cmd 프롬프트가 열리고 쉘이 있으므로 ssh를 더 단순하게 만드는 것과 관련이 있습니다. 그 일이 일어나기 때문에 그는 쉘없이 원하는 포트 전달 기능을 가지고 있습니다. -v는 자세합니다. (만약 당신이 장황한 -vvv를 원한다면 그들 중 3
개가

@ barlop에게 감사드립니다. 문서에서 약간 정리했습니다.
Mike HR

@ MikeH-R no prob 나는 당시에 확인하지 않았지만 그 당시의 것이 무엇인지 궁금해했습니다! 지금봤을 때 여전히 궁금했습니다!
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.