두 컴퓨터 사이에 SSH 터널을 만드는 방법은 무엇입니까?

두 컴퓨터 사이에 SSH 터널을 만드는 방법은 무엇입니까?

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'

프록시 명령은 sshB로 이동하여 ncA의 SSH 연결로 C의 포트 9103에 연결하는 터널을 실행하는 것을 의미합니다.

이것이 자주 수행되는 작업이라면 호스트 A에 배치 ~/.ssh/config하고 다음을 수행해야 합니다.

host C
    ProxyCommand ssh -q B nc C 9103

그러면 명령줄은 간단합니다.

$ ssh C

관련 정보