역방향 SSH를 통한 SOCKS 프록시

역방향 SSH를 통한 SOCKS 프록시

비슷한 질문을 본 적이 있지만 대답이 그다지 유효하지 않을 정도로 다릅니다.

두 개의 Debian Buster 호스트가 있습니다. 하나는 개인 네트워크(A)에 있고 다른 하나는 Azure(B)에 있습니다.

호스트 A가 호스트 B에서 역방향 SSH 연결을 시작하도록 하려고 합니다. 그런 다음 호스트 B는 SOCKS 프록시 수신기를 열어 해당 프록시 수신기에 대한 연결이 호스트 A로 다시 터널링되도록 합니다. 나는 명령을 입력하여 호스트 A에서 이 모든 것을 달성하고 싶습니다.

다음과 같이 호스트 B에서 호스트 A(호스트 A에 의해 시작됨)로 역방향 SSH 터널을 설정할 수 있다는 것을 알고 있습니다.

ssh -R b:localhost:a b.b.b.b

a= 호스트 A의 수신 포트
b= 호스트 B의 수신 포트
, 즉 b.b.b.b호스트 B의 IP 주소입니다.

그렇다면 두 번째 부분(호스트 B에 SOCKS 프록시 리스너를 자동으로 생성)이 작동하도록 하려면 어떻게 해야 합니까? 가능합니까? 아니면 netstat역방향 SSH 터널이 설정되었다고 말할 때마다(또는 이와 유사하게) SOCKS 프록시 리스너를 생성하는 스크립트를 호스트 B에 생성해야 합니까 ?

첫 번째 답변을 기반으로 명확히하기 위해 편집되었습니다.

답변1

첫 번째 단계인 역방향 SSH 연결을 설정했습니까? 그렇다면 localhost A는 트래픽이 Azure Server B의 포트 22로 전달되는 2222와 같은 모든 포트에서 수신 대기해야 합니다(기본 sshd 포트가 B에서 사용되는 경우).

  • 두 번째 단계는 양말 프록시입니다.

호스트 A 유형에서는
ssh -p 2222 -D 4444 -N localhost
SOCKS 프록시가 수신할 로컬(호스트 A)에서 포트 4444를 무작위로 선택했습니다.

트래픽: 4444 로컬 A -> 2222 로컬 A -> 22 Azure B

테스트하려면 Chrome과 같은 브라우저에서 양말 프록시 설정을 사용
google-chrome --proxy-server="socks://localhost:4444"
하거나 SOCKS 버전 4 또는 5를 선택하세요.
google-chrome --proxy-server="socks4://localhost:4444"

모든 것이 제대로 작동하면 Azure 컴퓨터를 게이트웨이/프록시로 사용하여 인터넷을 검색해야 합니다. 공개 IP를 확인하여 확인하세요.

관련 정보