여러 호스트를 통한 양말 프록시로서의 SSH


21

SSH로 다음을 수행 할 수 있습니다.

다음과 같은 세 가지 머신이 있습니다.

A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B

SOCKS 프록시를 설정하고 싶습니다. 실험실에있는 것처럼 집에있는 로컬 컴퓨터에서 서핑을 할 수 있기를 원합니다. 이것은 학교의 공공 IP에서만 접근 할 수있는 일부 사이트 때문입니다.

따라서 호스트 C에서 SOCKS 프록시를 실행하고 싶지만 호스트 A에서 작동하도록 관리하지는 않습니다.

게이트웨이에 연결하고 게이트웨이에서 워크 스테이션에 연결합니다. 그러나 게이트웨이가 트래픽을 프록시에서 제대로 전송하도록 할 수는 없습니다.

어떻게해야합니까?

답변:


28

세 가지 방법이 약간 다릅니다. ($ PORTX 및 $ PORTY를 선택한 포트 번호로 바꾸십시오.)

첫 번째 방법 : ProxyCommand

machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c

두 번째 방법 :

  1. "로컬 포워딩"을로 $PORT하여 A에서 B로 연결하십시오 .localhost:$PORT

    machine-a$ ssh -L $PORT:localhost:$PORT machine-b
    
  2. "동적 전달"이 활성화 된 상태에서 B에서 C로 연결하십시오.

    machine-b$ ssh -f -N -D $PORT machine-c
    
  3. 에서 프록시를 사용하도록 브라우저를 구성하십시오 .localhost:$PORT

1 단계와 2 단계는 다음과 같이 요약 할 수 있습니다.

ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"

세 번째 방법 :

  1. "로컬 포워딩"을로 $PORTX하여 A에서 B로 연결하십시오 machine-c:22.

    machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
    
  2. "동적 전달"을 사용하여 터널을 통해 A에서 C로 연결하십시오.

    machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
    

    -f -N대화식 연결에도 동일한 터널을 사용하려는 경우 생략 할 수 있습니다 .

  3. 에서 프록시를 사용하도록 브라우저를 구성하십시오 .localhost:$PORTY


1
정말 고마워요! 나는 그것을 하나의 라이너로 만들기 위해 여분의 +1을 줄 수 있기를 바랍니다!
jwbensley

2

AWS EMR Sock Proxy의 경우 적용 단계는 다음과 같습니다. 다음과 같이 두 가지 홉 시나리오가 있다고 가정합니다.

[your-laptop] --<ssh key1>--> [Jump-Box] --<ssh key2>--> [EMR-Master]

그리고 당신은 이미 브라우저에서 FoxyProxy 를 설정 했습니다. 단계를 시작하기 전에 시작하기 전에 활성화하십시오.

1 단계. 로그인 상자에 로그인

ssh -i ~ / .ssh / key1 ec2-user @

2 단계. Key2가 있다고 가정하고 Jump 상자에 동적 터널을 설정합니다.

ssh -i ~ / key2-N -D 8157 hadoop @

단계 3. ssh 클라이언트에서 새 콘솔을 열고 터널을 설정하십시오.

ssh -i ~ / .ssh / key1-L 8157 : localhost : 8157 ec2-user @ -N

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.