soma0sd

코딩 & 과학 & 교육

NVIDIA Jetson X VSCode 원격 개발 시작하기

반응형

Jetson 초기 설정을 마친 뒤에 VSCode(Visual Studio Cdoe)를 사용하여 원격개발을 시작합니다. VSCode는 다양한 환경에서 다양한 언어로 개발할 수 있는 소스코드에디터입니다.

VSCode 설치

VSCode 공식 홈페이지에서 설치 프로그램을 내려받아 설치합니다. 별다른 설정도 없고 설치가 끝나면 자동으로 실행합니다.

원격 개발 확장 설치

VSCode의 확장인 Remote Development은 WSL 연결, SSH연결, Docker 연결 등을 지원하는 원격 개발 도구입니다.

VSCode를 실행한 뒤 확장 아이콘이나 단축키Ctrl+Shift+X를 누르면 열면 마켓플레이스에서 확장을 검색할 수 있습니다. 이곳에서 Remote Development을 검색해서 나오는 확장 중 Microsoft가 제공하는 확장을 설치합니다.

설치한 뒤(혹은 확장에서 '다시로드' 버튼을 누른 뒤) 그림과 같이 새로운 원격 탐색기 아이콘이 생깁니다. 이 아이콘을 선택하고 새로 생기는 탭에서 원격탐색기 드롭다운 메뉴를 사용하여 SSH 연결을 사용할 수 있습니다.

젯슨과 연결

앞서의 과정에서 Jetson에 OS를 설치한 뒤라면 SSH 서버는 이미 설치되어 있으며 연결에 필요한 22 포트 또한 개방되어 있습니다. 개발용 클라이언트 PC와 호스트 Jetson이 동일한 네트워트에 연결되어 있음을 확인한 뒤 내부 IP를 알아냅니다. 터미널에서 hostname -I 명령이나 상단의 작업표시줄에서 인터넷 연결 아이콘을 눌러 Coneection Infomation에서 IPv4의 IP Address 항목을 통해 알아낼 수 있습니다.

알아낸 내부 IP를 VSCode의 SSH 원격개발도구 탭 상단의 +버튼을 눌러 다음 명령을 입력합니다. (SSH TARGETS 항목 위에 마우스 커서를 올려야 보이는 경우가 있습니다)

ssh {젯슨유저이름}@{찾아낸IP}

파일 단위로 관리하고 싶다면 + 버튼 옆의 톱니바퀴 버튼을 눌러 설정 파일을 선택합니다. 파일의 양식은 보통 다음과 같습니다.

Host Jetson-Dev
  HostName 192.168.0.XXX
  User soma0sd

Host {보여줄 이름}
  HostName {Jetson의 IP}
  User {로그인 유저 ID}

Host아래의 항목에 들여쓰기가 있음에 주의합니다. 이 파일을 수정하면 VSCode의 SSH 연결에도 적용됩니다.

이제 각 연결 항목의 새 창 버튼을 눌러 Jetson에 클라이언트로 접속할 수 있습니다. 처음 연결하는 경우 VSCode의 서버 관련 확장을 설치하기 때문에 시간이 꽤 걸립니다.

가끔 일어나는 문제

같은 IP로 다른 장비를 연결했을 경우 연결 실패가 발생하는 경우가 있습니다. 가장 간단한 방법으로는 개발용 클라이언트 컴퓨터에서 C:\Users\{사용자 계정}\.ssh\known_hosts(윈도우)나 ~/.ssh/known_hosts(리눅스)를 삭제한 뒤 다시 연결을 구성하면 해결됩니다.

SSH 연결시 비밀번호 확인 과정 생략하기

우선 개발용 클라이언트 컴퓨터에서 C:\Users\{사용자 계정}\.ssh\id_rsa.pub(윈도우)나 ~/.ssh/id_rsa.pub(리눅스) 파일이 존재하는지 확인합니다. 이 파일은 암호화를 키를 사용해서 SSH 로그인을 지원할 수 있도록 하는 기능을 위한 암호화 키 입니다. 만약 해당 파일이 없다면,

ssh-keygen

명령을 실행하여 새로운 암호화 키를 생성합니다. 비밀번호를 사용하지 않으려면 다 기본설정으로 두고 엔터를 입력합니다. 그렇게 생성한 암호화 키를 호스트 Jetson으로 옮깁니다. 개발용 클라이언트 PC에서 다음 명령을 사용합니다.

cat ~/.ssh/id_rsa.pub | ssh {Jetson 계정명}@{Jetson IP} 'mkdir ~/.ssh && cat >> ~/.ssh/authorized_keys'

여기서 ssh 접속을 위한 비밀번호 입력을 한 번 거치고 나면 다음 접속부터는 명령을 실행한 클라이언트 PC에 한해 비밀번호 입력을 요구하지 않습니다.

반응형
태그:

댓글

End of content

No more pages to load