두 시스템 사이의 SSH 터널은 세 번째 시스템에만 SSH를 통해 연결할 수 있지만 서로 직접 연결할 수는 없습니다.

두 시스템 사이의 SSH 터널은 세 번째 시스템에만 SSH를 통해 연결할 수 있지만 서로 직접 연결할 수는 없습니다.

내 설정에는 3대의 컴퓨터가 있습니다.

M1     M2     M3
  • M3를 제어하는 ​​M1에서 SSH 셸을 열어야 합니다.
  • M1과 M3은 서로 다른 방화벽 뒤에 있으므로 서로 직접 연결할 수 없습니다.
  • M1과 M3할 수 있는M2에 연결하고 SSH를 통해 연결합니다. 그러나 그 반대는 사실이 아닙니다. M2는 M1 또는 M3에 도달할 수 없습니다.

M2를 사용하여 M1에서 M3까지 터널을 만들 수 있나요?

M1 --> M2 <-- M3
 \____________^

답변1

M3에서

ssh -R localhost:2602:localhost:22 user@M2

M1에서

ssh -L localhost:2602:localhost:2602 user@M2

이제 M1에서 M3으로 직접 연결할 수 있습니다(여기서 localhost는 실제로 M3을 나타냅니다).

ssh user@localhost -p 2602

답변2

나는 -J이것을 하기 위해 ("Jump"였던 것을 기억합니다)를 사용합니다.

M1 -> M3(M2 경유):

ssh -J M2 M3 

scp다음과 같은 것도 지원합니다.

scp --ProxyJump=M2 localfile M3:remotefile

IP 측면에서 설명하는 것이 가장 쉽다고 생각합니다.

M1 = 192.168.1.100
M2 = 192.168.1.101 & 10.10.1.200
M3 = 10.10.1.201

M1은 액세스할 수 없으므로 10.10.1.x두 네트워크 모두 M2를 통해 액세스해야 합니다. 이는 각 시스템에 서로 다른 사용자가 있다고 가정하면 복잡해집니다. M1에서 M3으로 SSH:

[email protected]: ~ $ ssh -J [email protected] [email protected]

또는 remotefileM3에서 M1로:

scp [email protected] [email protected]:remotefile localfile

관련 정보