두 개의 서버를 프록시로 사용

두 개의 서버를 프록시로 사용

중간에 두 개의 서버(A와 B)가 있는 프록시를 구현하고 싶습니다. 트래픽은 내 컴퓨터에서 서버 B로 이동한 다음 서버 A로 이동한 다음 데이터를 가져옵니다. ~/.ssh/config에서 이 구성을 사용하는 것을 발견했습니다.

HOST B
    HostName B
    user debian
    DynamicForward 0.0.0.0:1081

1081 포트를 프록시로 사용할 수 있습니다. 하지만 지금은 A를 통해 B의 모든 트래픽을 프록시하는 방법을 모르겠습니다.

이것은 내 SSH 버전입니다.

OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g 2016년 3월 1일

답변1

B는 A에 도달하는 모든 것을 처리합니다. A는 데이터를 기반으로 데이터를 검색할 위치를 선택해야 합니다. 당연히 A만 있어야 합니다.동적 전달터널에서 B는 연결을 위한 중간 호스트로만 작동합니다. 일반적으로 B에는 클래식만 필요합니다.지역 전달A에게 질문을 해보세요.

다양한 방법으로 수행할 수 있지만 가장 간단하고 안전한 방법은 다음과 같습니다.프록시 점프이 기능은 A가 직접 액세스할 수 있는 것처럼 표시하므로 B가 의도한 포트 전달과 어떻게 상호 작용할지 더 이상 생각할 필요가 없습니다. B는 거의 보이지 않는 것으로 생각할 수 있습니다. 따라서 결국 다음 구성을 넣을 수 있습니다 ~/.ssh/config.

Host B
    User userb

Host A
    User usera
    ProxyJump B
    DynamicForward 1081

그냥 전화하세요:

ssh A

구성 파일이 없으면 해당 명령줄은 다음과 같습니다.

ssh -D 1081 -J userb@B usera@A

고쳐 쓰다: 해야 한다SSH버전이 7.3 이전입니다(OP용인 것 같습니다).프록시 점프여전히 대체 가능프록시 명령+SSH-W이와 같이:

구성 파일로 ~/.ssh/config:

Host B
    User userb

Host A
    User usera
    ProxyCommand ssh -W %h:%p B
    DynamicForward 1081

또는 구성 파일이 없는 동일한 명령줄:

ssh -D 1081 -o 'ProxyCommand ssh -W %h:%p userb@B' usera@A

SOCKS5 API는 클라이언트에서 사용할 수 있습니다 localhost:1081(다시 넣거나 0.0.0.0:1081사용하지 않는 한).게이트웨이 포트/-G) 다른 클라이언트가 사용할 수 있도록 합니다). 후드 아래에서 한 쌍의 파이프로 제어되는 생성된 서브SSH프로세스는 호스트 B를 통해 터널을 설정하고 A의 SSH 서버를 초기 호스트에 제공합니다.SSH명령: 전체 SSH가 터널링되므로 특정 추가 포트 전달을 구성할 필요가 없습니다.

관련 정보