공용 IP 주소가 없는 임베디드 Linux(C라고 함)에 어디에서나 직접 연결할 수 있기를 원합니다.
C는 (SSH -R을 사용하여) 서버에 대한 연결을 설정할 수 있으며, 서버에 SSH를 연결하면 임베디드 Linux에 SSH를 연결할 수 있습니다.
그러나 먼저 서버에 SSH를 연결하지 않고도 클라이언트에서 C로 SSH를 연결할 수 있기를 바랍니다. (C에서 클라이언트로 SSH -R을 사용하여 연결을 설정할 수 없습니다)
이것이 가능합니까? 그렇다면 어떻게 가능합니까?
답변1
꽤 쉽게 이 작업을 수행할 수 있습니다. 한 가지 방법은 SSH의 원격 포트 전달을 사용하는 것입니다. 이를 통해 C는 서버에 다음과 같이 포트를 다시 전달하도록 지시합니다.
ssh -R 2222:localhost:22 server
C에서 실행되는 이 명령은 서버에 포트 2222에 대한 연결을 취하고 이를 포트 22의 C로 전달하도록 지시합니다.
마찬가지로 방화벽 규칙을 통해 서버에서 포트 전달을 설정할 수 있습니다.
답변2
전달된 포트에 연결하려면 다음 네 가지가 필요합니다.
- 에 대한 첫 번째 인수로 서버 공용 IP/호스트 이름을 지정하십시오. 그렇지 않으면 서버 외부에서는 당연히 액세스할 수 없는
-R
에서만 수신 대기하게 됩니다 .localhost
GatewayPorts
전달된 포트를 외부에서 액세스할 수 있도록 서버를 구성하십시오 .-g
기본적으로 클라이언트 측에서도 동일한 기능을 허용하려면 스위치를 사용하세요.2222
서버 방화벽에서 포트를 엽니다 .
명령은 다음과 같습니다.
ssh -g -R server:2222:localhost:22 server