장치가 인터넷에 연결되어 있지만 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의 라이브러리를 사용하여 연결하는 것이었고 동일하게 작동했습니다)