본문 바로가기
NVIDIA Jeston/Jetson BSP

Jetson Reverse SSH 터널링

by makepluscode 2022. 12. 3.
반응형

엣지컴퓨팅, 클라우드 연결되다

다양한 장소에 설치된 엣지디바이스의 상태를 모니터링, 소프트웨어 업데이트 등을 해야할 경우가 있다. 엣지디바이스와 서버 사이의 SSH 채널을 생성하는 방법을 Jetson 의 사례로 소개한다.

NVIDIA Jetson 리버스 터널링

Jetson 과 lightsail 의 연결

Jetson 과 같은 엣지디바이스의 상태를 모니터링, 소프트웨어 업데이트를 위한 서버 연결 구조를 설명한다. 다음 그림은 사설네트워크의 Jetson 과 인터넷의 Lightsail 의 연결을 보여준다.

  • SSH reverse turnneling 을 통해 Jetson 은 클라우드 Server에 접속할 수 있다.
  • 사용자는 클라우드 Server 를 통해 Jetson 에 접속 할 수 있다.

SSH reverse turnnel 을 구성하여 사설망에 있는 Jetson 에 접속이 가능하다!

테스트환경

  • AWS Lightsail (Ubuntu 18.04)
  • NVIDIA Jetson NX (Jetpack 4.6)

STEP1. AWS Lightsail 설정하기

Lightsail 서버에 접속하여 /etc/ssh/sshd_config 를 열고 GatewayPorts 를 yes 로 변경한다.

$ cat /etc/ssh/sshd_config | grep GatewayPorts
GatewayPorts yes

Lightsail 서버에 변경된 설정이 반영되기 위해 ssh server 를 다시 실행한다.

$ sudo service ssh reload

Lightsail 서버의 7777 포트 방화벽을 해제한다.

$ sudo ufw allow 7777

Web browser 에서 Lightsail 서버의 설정을 수정한다. IPv4 Firewall 설정에서 Add rule 을 통해 TCP 7777 포트 규칙을 추가한다.

AWS LightSail 에서 ssh 터널 포트를 연다

STEP2. Jetson 에서 AWS Lightsail 에 연결하기 

Jetson 에서 다음 명령어로 Lightsail 서버로 연결한다.

$ ssh -i ./server.pem -fNR 7777:localhost:22 ubuntu@15.x.x.x
  • server.pem 파일은 서버의 키이다. Web browser 에서 Lightsail 서버 설정에서 다운로드 할 수 있다.
  • ssh 의 f 옵션은 인증과 전송이 설정된 후에 백그라운드에서 ssh를 설정하는 것을 가능하게 한다.
  • ssh 의 N 옵션은 remote 명령이 실행되지 않도록 한다. 단지 포워딩만 하겠다는 의미이다.
  • ssh 의 R 옵션은 Reverse tunnel 을 열도록 한다.
  • 7777(연결포트번호):로컬주소:22(내부포트번호)
  • ubuntu@15.x.x.x 는 접속될 서버의 아이디와 주소이다. (Lightsail 서버)

STEP3. 연결 테스트

제 3의 Host 에서 연결 테스트를 한다. ssh 명을 통해서 서버의 7777 포트에 접속한다. 이때 서버가 아닌 Jetson 으로 접속됨을 확인한다.

$ ssh -i .\server.pem ubuntu@15.X.X.X -p 7777

참고자료

엣지단말을 매번 연결해줘야 하는 불편함이 있다. 재부팅 후에도 연결을 유지하고 싶다면 autossh 를 찾아보자.

https://linux.die.net/man/1/autossh

 

autossh(1): monitor/restart ssh sessions - Linux man page

autossh(1) - Linux man page Name autossh - monitor and restart ssh sessions Synopsis autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS] Description autossh is a program to start a copy of ssh and monitor it, restarting it as necessary should it die or s

linux.die.net

반응형