여러 호스트 간의 SSH 터널

여러 호스트 간의 SSH 터널

이는 여기서 본 다른 SSH 문제와 약간 다르므로 여기에 있습니다. 웹 애플리케이션에 액세스하기 위한 설정이 복잡하고 안타깝게도 이를 해결할 수 있는 방법이 없습니다. 관련된 시나리오와 시스템은 다음과 같습니다(명백한 이유로 익명화된 IP 주소).

System Alpha
System Bravo
System Charlie
System Delta

System Alpha에서 System Delta 사용 가능한 웹사이트로 통신해야 합니다. 문제는 System Delta와 직접 대화할 수 없다는 것입니다. 현재는 Bravo 시스템에 SSH로 연결할 수 있고, Bravo 시스템을 프록시로 사용하는 프록시 명령을 사용하여 시스템 Charlie에 SSH로 연결할 수 있습니다. 이를 설명하기 위해 SSH 구성은 다음과 같습니다.

Host system.bravo
  User bob
  Hostname 1.1.1.1
  ForwardAgent yes

Host system.charlie
  User bob
  ForwardAgent yes
  ProxyCommand ssh -q system.bravo nc localhost 1081

System Alpha는 포트 1081에서 System Bravo에 대한 역방향 SSH 터널을 생성하므로 System Charlie에 이 방식으로 액세스할 수 있습니다. 이는 System Bravo와 System Charlie 사이의 방화벽이 System Bravo로의 SSH 아웃바운드만 허용하기 때문에 수행됩니다. 귀찮은 건 알지만 고객의 요청입니다.

시스템 Charlie는 SSH를 통해 Delta 시스템에 액세스하는 데 문제가 없습니다. 내 질문은 System Alpha가 System Delta에서만 액세스할 수 있는 웹 사이트에 액세스할 수 있도록 SSH를 통해 사용 가능한 SOCKS 프록시를 설정하는 방법입니다. 보통 나는 이렇게 한다:

ssh -2 -C -D 4001 -L 4002:localhost:4002 -L 4003:localhost:4003 [email protected]
ssh -2 -C -D 4002 -L 4003:localhost:4003 [email protected]
ssh -2 -C -D 4003 [email protected]

그런 다음 Firefox에 사이트 액세스를 위한 작업 프록시가 될 localhost:4003을 지정합니다. 그러나 Bravo 시스템과 Charlie 시스템 간의 이상한 설정으로 인해 이것이 작동하지 않습니다. ***통신을 보여주는 다이어그램이 이 작업을 더 쉽게 만들 것이라는 점이 나에게 지적되었습니다. 그래서 여기 있습니다:

A full list of possible connections:
     ----->      --X-->       ----->
Alpha       Bravo      Charlie      Delta
     <--X--      <-----       <--X--

The connection between Alpha and Bravo and Charlie as it is currently 
configured:

     ProxyCommand ssh -q system.bravo nc localhost 1081
     -------------------------------------------------->      
Alpha    Bravo <---------------------------------------- Charlie
                      AUTOSSH -R 1081:localhost:22 

-----> = An allowed connection via SSH
--X--> = A blocked connection, only reverse SSH possible

Bravo 시스템과 Charlie 시스템 사이에 필요한 프록시 명령과 역방향 SSH 터널을 염두에 두고 이 작업을 수행하는 방법에 대한 솔루션을 갖고 있는 사람이 있습니까?

매우 감사합니다

추신: 내 다이어그램이 도움이 되기를 바랍니다. 죄송합니다. 실제 이미지가 아닙니다.

답변1

A에서 C로 SSH를 통해 연결할 수 있다면 다음과 같이 할 수 있습니다.

user@Alpha:~$ ssh -L1234:localhost:1234 Charlie
user@Charlie:~$ ssh -Dlocalhost:1234 Delta

...이 시점에서 Firefox에 localhost:1234를 SOCKS 프록시로 사용하도록 지시할 수 있습니다. 로컬 SSH는 터널을 통해 이를 C로 프록시하고, 여기서 ssh는 SOCKS 서버로 수신하여 D로 전달합니다.

하지만 실제로 저는 귀하의 고객의 의견에 동의하지 않습니다. 고객이 A에서 사이트에 액세스하기를 원한다면 고객은 그렇게 할 수 있는 합리적인 방법을 제공해야 합니다. VPN과 같은.

관련 정보