
Macbook A
, 공용 서버 B(public IP: 1.2.3.4, internal IP: 10.0.0.2)
, 내부 서버 가 있습니다.C(internal IP: 10.0.0.3)
A
B
B의 공용 IP 로 연결할 수 있고 C의 개인 IP B
로 연결할 수 있지만 직접 연결할 수는 없습니다 .C
A
C
C:2345
이제 에서 에 연결하고 싶으 A
므로 에서 포트 포워딩을 할 수 있을 것 같습니다 B:1234=>C:2345
.
어떤 명령을 실행해야 하며 어떤 서버에서 실행해야 합니까?
나는 시도했다:
ssh -NfR 1234:localhost:2345 10.0.0.3
ssh -L 1234:0.0.0.0:2345 10.0.0.3
둘 다 작동하지 않습니다.
답변1
할 것정확히요청한 것( B:1234=>C:2345
)은 다음에서 실행되어야 합니다 B
.
# Not recommended. Read along.
ssh -NgL 1.2.3.4:1234:localhost:2345 10.0.0.3
또한 방화벽 1234
에서 포트를 열어야 합니다. 그런 다음 루프백 인터페이스를 통해 자체적 으로 연결하는 것처럼 외부에서 B
연결합니다 . 누구나 연결할 수 있으므로 서버 (서버가 무엇이든)가 비밀번호로 보호되어 있지 않은지 염두에 두십시오.1.2.3.4:1234
10.0.0.3:2345
C
C
A
에서 까지 가는 더 쉽고 훨씬 더 안전한 방법 C
은 다음과 같습니다. 요청한 대로 정확히 수행되지는 않지만 아마도 원하는 대로 수행될 것입니다. 에 A
:
ssh -NL 1234:10.0.0.3:2345 1.2.3.4
그런 다음 에 연결하여 127.0.0.1:1234
의 A
포트에 2345
연결 합니다 C
. C
에서 들어오는 트래픽을 볼 수 있습니다 B
. 이 연결은 오직 사용자만 사용할 수 있으므로 A
이전 방법보다 훨씬 더 안전합니다.
A
다른 컴퓨터(예: LAN에서 ) 연결을 허용하려면 -g
옵션을 사용하고 바인드 주소를 지정해야 합니다. 예:
ssh -NgL A_LAN_address_here:1234:10.0.0.3:2345 1.2.3.4
이 경우 A
그에 따라 방화벽을 재구성한 다음 에 연결하세요 A_LAN_address_here:1234
.
답변2
Mac에서는 먼저
ssh -L2345:10.0.0.3:2345 10.0.0.2
그러면 Mac에서 10.0.0.3의 :2345에 직접 연결되는 로컬 포트 2345가 열립니다.
127.0.0.1:2345
그런 다음 Mac에서 액세스하면 됩니다 . 이 포트로 가는 모든 것은 SSH를 통해 터널링되어 10.0.0.3:2345
. 해당 서버에는 에서 오는 것으로 나타납니다 10.0.0.2
.