A, B, C 세 대의 컴퓨터가 있다고 가정해 보겠습니다.
컴퓨터 A는 포트 9103을 통해 컴퓨터 C에 연결해야 합니다.
하지만 C에는 도달할 수 없습니다. 그러나 컴퓨터 B에 도달할 수 있고 컴퓨터 B는 컴퓨터 C에 도달할 수 있습니다.
SSH 터널을 통해 이 작업을 수행할 수 있다는 것을 알고 있습니다. 그러나 문제를 복잡하게 만드는 것은 방화벽으로 인해 컴퓨터 A는 컴퓨터 B로 SSH를 통해 연결할 수 없지만 B는 컴퓨터 A로 SSH를 통해 연결할 수 있다는 것입니다. 따라서 A가 B에 도달할 수 있도록 역방향 SSH 터널이 B에서 생성될 수 있습니다.
컴퓨터 A가 컴퓨터 B를 통해 컴퓨터 C에 연결할 수 있도록 컴퓨터 B에 터널을 만드는 방법이 있습니까?
답변1
B의 A:59103에서 시작하는 역방향 터널을 생성합니다. B와 관련된 끝점은 C:9103입니다.
ssh -R 59103:C:9103 A
A의 포트 번호를 59103에서 적절한 포트 번호로 변경합니다.
해결책은 B가 표면적으로 C에 도달할 수 있다는 귀하의 진술을 받아들입니다. B에서 C로의 연결은 보호되지 않습니다 ssh
.
답변2
좀 더 화려하게 만들고 싶다면 다음과 같이 (호스트 A에서) nc
요청 시 터널을 설정할 수 있습니다(B에 설치된 경우 ).nc
$ ssh C -oProxyCommand='ssh -q B nc C 9103'
프록시 명령은 ssh
B로 이동하여 nc
A의 SSH 연결로 C의 포트 9103에 연결하는 터널을 실행하는 것을 의미합니다.
이것이 자주 수행되는 작업이라면 호스트 A에 배치 ~/.ssh/config
하고 다음을 수행해야 합니다.
host C
ProxyCommand ssh -q B nc C 9103
그러면 명령줄은 간단합니다.
$ ssh C