장치가 인터넷에 연결되어 있지만 NAT 뒤에 있으므로 네트워크 외부에서 SSH를 통해 직접 액세스할 수 없습니다. 역방향 SSH 터널링이 이 문제를 우회할 수 있다는 것을 발견했습니다.
이제 이 장치에서 netcat 서버 프로세스를 실행하여 네트워크 외부에서 다시 액세스할 수 있게 만들고 싶습니다. 어떻게 해야 하나요?
답변1
나는이 문제를 직접 해결했습니다. SSH 터널링은 기본적으로 포트 포워딩인 것 같습니다. NAT 뒤의 서버에서 다음 코드를 실행하고 있습니다.
ssh -N -R 4321:localhost:1234 user@client &
client:4321
server:1234
이렇게 하면 트래픽을 라우팅 하고 &
백그라운드에서 실행하도록 터널이 설정됩니다 . 여전히 서버에서 다음을 실행합니다.
ncat -lk -c "python myscript.py" localhost 1234 &
그러면 netcat 프로세스가 실행되기 시작합니다 myscript.py
. 이제 netcat을 통해 클라이언트에서 서버에 연결할 수 있습니다.
nc localhost 4321
ncat
(내 클라이언트에서는 아니지만 nc
작동합니다. 실제 사용 사례는 socket
Python의 라이브러리를 사용하여 연결하는 것인데, 이는 동일하게 작동합니다)