SSH 포트 전달 명령을 어떤 서버에서 실행해야 합니까?

SSH 포트 전달 명령을 어떤 서버에서 실행해야 합니까?

Macbook A, 공용 서버 B(public IP: 1.2.3.4, internal IP: 10.0.0.2), 내부 서버 가 있습니다.C(internal IP: 10.0.0.3)

ABB의 공용 IP 로 연결할 수 있고 C의 개인 IP B로 연결할 수 있지만 직접 연결할 수는 없습니다 .CAC

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:123410.0.0.3:2345CC


A에서 까지 가는 더 쉽고 훨씬 더 안전한 방법 C은 다음과 같습니다. 요청한 대로 정확히 수행되지는 않지만 아마도 원하는 대로 수행될 것입니다. 에 A:

ssh -NL 1234:10.0.0.3:2345 1.2.3.4

그런 다음 에 연결하여 127.0.0.1:1234A포트에 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.

관련 정보