내 설정에는 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]
또는 remotefile
M3에서 M1로:
scp [email protected] [email protected]:remotefile localfile