공용 IP 주소 없이 어디서나 임베디드 Linux(C라고 함)에 직접 연결할 수 있기를 원합니다.
C는 (SSH -R을 사용하여) 서버에 대한 연결을 설정할 수 있으며, 서버에 SSH를 연결하면 임베디드 Linux에 SSH를 사용할 수 있습니다.
그러나 먼저 서버에 SSH를 연결하지 않고도 클라이언트에서 C로 SSH를 연결할 수 있기를 원합니다. (SSH -R을 사용하여 C에서 클라이언트로 연결을 설정할 수 없습니다.)
가능합니까? 그렇다면 어떻게?
답변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