마지막 SSH 서버를 호스트로 설정하고 중간 서버를 ProxyJump에 넣습니다:

Host proxy-exit
    HostName exit.example
    User operator
    ProxyJump [email protected]
    DynamicForward 127.0.0.1:1080

해당 호스트에서 권한이 있는 계정으로 ssh -N proxy-exit을 시작합니다. 로컬 애플리케이션이 127.0.0.1:1080에서 SOCKS를 쓰도록 설정합니다. 리스너는 클라이언트에 있고, SSH 연결은 exit.example에 jump.example을 거쳐 도달합니다.

요청된 웹사이트 연결은 마지막 SSH 세션의 원격 측—exit.example—에서 열립니다. 점프는 SSH 전송을 그 호스트까지 나를 뿐이며, 처음 도달 가능한 머신이라는 이유만으로 SOCKS 출구가 되지는 않습니다.

목적지는 출구 호스트의 라우팅과 NAT가 선택한 주소를 봅니다. 그 주소가 호스트 이름의 로그인 주소와 같을 필요는 없습니다. 두 서버 모두 각자의 역할에 필요한 포워딩 권한이 있어야 하며, 호스트 키 검사는 의도한 SSH 엔드포인트에 계속 적용됩니다.

이 구성은 SSH 동적 포워딩을 통해 SOCKS 서비스를 만듭니다. 게이트웨이가 이미 독립적인 SOCKS 리스너를 실행 중이라면, 고정 포워드로 그 리스너에 도달하는 것은 다른 배치입니다.

관련 글