SSH를 통한 단순 SOCKS 프록시 터널 설정

SSH를 통해 액세스할 수 있는 Linux/Unix 서버가 있는 경우 간단한 프록시 서버로 사용하기가 매우 쉽습니다. 이는 로컬 인터넷 연결에 대한 콘텐츠 필터 및 기타 제한 사항을 우회하는 데 유용할 수 있습니다. 가장 저렴한 Linux/BSD VPS 옵션으로도 충분합니다.

이 기능은 OpenSSH에 내장되어 있으므로 추가 소프트웨어를 설치하거나 추가 구성을 수행할 필요가 없습니다.

동적 포트 전달 옵션을 사용하여 클라이언트 측에서 ssh 연결을 열기만 하면 됩니다.

ssh -D 1080 myserver

-D 옵션은 ssh가 동적 응용 프로그램 수준 포트 전달에 로컬 1080 포트를 사용하도록 지시합니다. 실질적으로 이것은 ssh 클라이언트가 해당 포트에서 SOCKS 4/5 서버로 작동함을 의미합니다.

구성에 따라 SSH 포트 및 사용자를 지정해야 할 수도 있습니다(예: ssh -p 2222 myuser@myserver . 하지만 이 경우 대신 ~/.ssh/config 파일에서 호스트 프로필 설정을 고려할 수 있습니다).

그런 다음 localhost:1080에서 SOCKS 프록시를 사용하도록 브라우저에 지시하기만 하면 됩니다.

브라우저 설정



Firefox에서는 설정/네트워크 설정/인터넷에 대한 프록시 액세스 구성 - 수동 프록시 구성에서 SOCKS 프록시를 설정할 수 있습니다.
  • SOCKS 호스트: localhost
  • 포트: 1080
  • 양말 v5

  • Google Chrome/Chromium을 사용하는 경우 --proxy-server 인수로 브라우저를 시작해야 합니다.

    chromium --proxy-server="socks5://localhost:1080"
    


    비대화형/스크립팅 사용



    SSH 클라이언트가 대화형 세션을 열지 않도록 하려면 -N 플래그와 -f 플래그를 사용하여 셸을 실행하지 못하도록 하여 백그라운드에 배치할 수 있습니다.

    ssh -N -f -D 1080 myserver
    


    필요할 때 자동으로 연결을 다시 시작하려면 autossh 도구를 사용할 수 있습니다(구문은 동일함).

    autossh -N -f -D 1080 myserver
    


    퍼티



    CLI ssh 클라이언트 대신 Putty를 사용하는 경우 소스 포트로 1080을 추가하고 연결/SSH/터널에서 전달 옵션으로 동적을 선택해야 합니다.

    관련 SSH 옵션




         -D [bind_address:]port
                 Specifies a local “dynamic” application-level port forwarding.
                 This works by allocating a socket to listen to port on the local
                 side, optionally bound to the specified bind_address.  Whenever a
                 connection is made to this port, the connection is forwarded over
                 the secure channel, and the application protocol is then used to
                 determine where to connect to from the remote machine.  Currently
                 the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
                 as a SOCKS server.  Only root can forward privileged ports.  Dy‐
                 namic port forwardings can also be specified in the configuration
                 file.
    
                 IPv6 addresses can be specified by enclosing the address in
                 square brackets.  Only the superuser can forward privileged
                 ports.  By default, the local port is bound in accordance with
                 the GatewayPorts setting.  However, an explicit bind_address may
                 be used to bind the connection to a specific address.  The
                 bind_address of “localhost” indicates that the listening port be
                 bound for local use only, while an empty address or ‘*’ indicates
                 that the port should be available from all interfaces.
    
         -N      Do not execute a remote command.  This is useful for just for‐
                 warding ports.
    
         -f      Requests ssh to go to background just before command execution.
                 This is useful if ssh is going to ask for passwords or
                 passphrases, but the user wants it in the background.  This im‐
                 plies -n.  The recommended way to start X11 programs at a remote
                 site is with something like ssh -f host xterm.
    
                 If the ExitOnForwardFailure configuration option is set to “yes”,
                 then a client started with -f will wait for all remote port for‐
                 wards to be successfully established before placing itself in the
                 background.
    




    참고: 이것은 BetterWays.dev wiki 의 위키 페이지 스냅샷입니다. 최신(더 나은 형식) 버전은 betterways.dev/setting-up-a-simple-socks-proxy-tunnel-over-ssh 에서 찾을 수 있습니다.

    좋은 웹페이지 즐겨찾기