본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 프로그래밍/VSCode
  3. VMWare VSCode SSH 원격으로 연결해서 프로그래밍 하기

VMWare VSCode SSH 원격으로 연결해서 프로그래밍 하기

· 댓글개 · KRFile

안녕하세요 파일입니다. 오늘은 VMWare 안에서 돌리는 리눅스와, 윈도우가 깔린 메인 PC에서 VSCode를 실행해서 SSH로 원격으로 코딩하는 방법을 알아 보겠습니다. 이렇게 하면 메인 PC에서 VSCode로 무언가 작성해서 컴파일 후 프로그램을 실행시키면, 실제로는 SSH로 연결되어 있는 VMWare안의 리눅스 쪽에서 코드가 실행되서 리눅스 환경에서 실행한것과 동일한 효과를 낼 수 있게 됩니다.

 

즉 느려터진 가상머신 VMWare안에서 VSCode 키고 코딩하는게 아니라 윈도우쪽에서 VSCode켜서 빠르고 편리하게 코딩한다음에, 실행은 실제로 SSH로 연결된 리눅스 쪽에서 실행시키는 겁니다.

일종의 원격(?) 프로그래밍 이라고 볼 수 있겠네요.

 

Why Use?

윈도우에서 리눅스 환경으로 실행하고 싶으면 안전하고 빠른 WSL2 쓰면 되는데 왜 이거쓰냐? 라고 질문하실 수 있는데요..  이번에 시스템 프로그래밍 과제하면서 OS 쓰레드를 C언어로 직접 구현하는 문제가 출제되었는데 기본 리눅스 환경하고 WSL 환경의 실행이 다를  수 있어서 WSL로 테스트 하지말고 반드시 우분투 22.04.X 버전으로 테스트 하랍니다.

 

https://learn.microsoft.com/ko-kr/windows/wsl/compare-versions

분명 WSL2 부터는 리눅스 커널을 통째로 윈도우쪽에 박아서 Hyper-V 같은 가상환경으로 포장한걸로 알고 있었는데..? 리눅스 원본 커널과 동작이 다른지 찾아보니깐 아마 기본 리눅스 커널과 완전히 똑같은 건 아닌가 봅니다.  WSL 관련하여 마이크로소프트 공식 문서 찾아보니깐 기본 리눅스 커널을 기반으로 해서 윈도우에 맞게 튜닝을 했다네요.

 

https://github.com/microsoft/WSL2-Linux-Kernel

마이크로소프트가 GitHub 인수한 뒤로 무려 WSL2 리눅스 커널을 오픈소스로 공개까지 해줬습니다. 어쨌던 토르발즈 형님이 관리하시는 원본 Linux 커널과는 동작이 비슷한지는 코드를 비교해보거나 동작을 비교해봐야 알겠지만.. 일단은 과제 제출할려면 채점하는 곳 환경하고, 제쪽에서 테스트 하는 환경이 똑같아야 마음이 편하겠죠?

 

사실 지금까지 리눅스 환경으로 하는 과제 내면서 전부 WSL로 테스트 해서 제출했었고 아무 문제는 없었습니다만 구현하려는 문제 자체가 OS 기능을 구현하는거라서 WSL이 순수 리눅스와 조금이라도 동작이 달라지면 틀릴 수 있어서 그냥 우분투 22.04.x 깔아서 코딩하기로 했습니다. 

 

그래서 VMWare에 우분투 깔고, 우분투 안에 VSCode까지 깔아서 가상 환경 안에서 열심히 코딩했는데 과제도 어려워서 머리도 잘 안돌아가는 와중에 느린 가상 환경에서 마우스, 키보드 렉까지 걸린 상태로 코딩하니깐 정말 열받더라구요.

 

그래서 생각한게  빠른 윈도우 쪽에서 VSCode로 코딩하고 실행만 원격으로 우분투한테 맡기면 되겠다 해서 생각한 방법이 바로 요겁니다.

이러면 윈도우 안에서 순수 리눅스 환경을 보장하면서, 그나마 빠른 속도로 코딩이 가능합니다.

 

How to?

 

지금 할려는걸 그림으로 간단히 나타내면 다음과 같습니다. 사실 메인 컴퓨터 안에 VMWare이 실행되는거라 그림을 그릴때 VMWare을 메인 컴퓨터 안으로 넣어서 그려야 하는데 그럼 햇갈리니깐 밖으로 빼서 생각해보자구요.

 

저희가 할려는건 딱 하나인데 VSCode 켜서 SSH 연결로 저기 VMWare 안에서 돌아가는 리눅스랑 연결하는 겁니다. 

메인 컴퓨터에서 우분투 가상 환경으로 SSH 연결 요청하는건 간단합니다. VSCode에서 Remote SSH라는 확장 플러그인이 있는데 이거만 깔면 터미널 연결이랑 SSH 연결을 알아서 해줍니다.

 

Client 요청은 이걸로 끝났고 문제는 저 우분투 가상 환경(Server 쪽)인데 VSCode의 SSH 연결 요청을 받기 위해, SSH 서버를 우분투 쪽에 하나 설치해줘야 합니다. 물론 SSH 서버를 연다음에 접속을 위해 서버 IP주소도 알아야겠죠.

이 과정들을 한번 해결해봅시다.

 

Client

접속하는 메인 PC(Client)에선 아까 얘기한대로 Remote - SSH 확장 검색해서 깔아주면 끝입니다.

 

Server

sudo apt update
sudo apt-get install openssh-server

이제 VMWare안에 우분투에서 위 명령어를 입력해서 SSH 서버를 설치해줍니다.

 

sudo service ssh status

다음 명령어를 실행해서 SSH 서버가 잘 돌아가고 있는지 확인합니다.

 

잘 돌아가고 있으면 위와 같이 표시될 겁니다.

여기서 주목할건 SSH 서버가 돌아가고 있는 IP와 Port인데요.

 

0.0.0.0 으로 표시되어 있는데 IP를 따로 지정해주지 않으면 자기 컴퓨터의 IP로 돌아갈 것이라 VMWare로 연결된 우분투가 돌아가고 있는 IP주소를 알아내면 되고, 포트는 앞에서 따로 설정 안해줘서 SSH 기본 포트인 22번으로 접속하면 되겠습니다.

 

ip address

위 명령어를 입력해서 자신의 IP주소를 확인합니다.

inet 192.168.X.X 라고 적힌 부분이 우리가 접속할 IP주소 입니다.

VMWare에서 가상으로써 별도로 돌아가고 있기에 localhost 가 아님에 유의합시다.

 

whoami

그리고 접속할 때 유저이름도 필요한데 위 명령어를 쳐서 나오는게 우분투의 사용자 이름입니다.

이것도 메모해 둡시다.

 

* 현재 기록해둔거

1. 얻은 ip주소

2. 포트 22번

3. 사용자 이름

 

위 3가지 정보를 알면 이제 SSH 접속 명령어를 실행(완성)할 수 있습니다.

사용자 이름이 file, 포트는 22번, ip주소가 192.168.189.135 이라고 가정하면 SSH 연결 명령은 아래와 같습니다.

 

ssh file@192.168.189.135

= ssh {사용자이름}@{IP주소}:{포트번호}(22면 따로 안써도됨)

 

자신이 얻은 정보에 맞게 명령어를 메모장 같은곳에 써놓고 저장해둡시다.

 

Connection

 

이제 VSCode로 돌아와서 Remote SSH 탭으로 이동한 뒤, + 버튼을 눌러서 연결을 추가하고 위 연결 명령에 방금 만든 명령어 ssh file@192.168.189.135 을 입력하면 됩니다.

 

추가가 됐으면 오른쪽 클릭 - 현재 창 또는 새 창에서 연결 합니다.

암호를 요구하면 우분투에서 쓰던 그대로 입력하면 됩니다.

 

드디어 이제 순수 리눅스 환경과 SSH로 연결하여 윈도우에서 빠른 코딩이 가능해졌습니다.

원격으로 연결되었기 때문에 여기서 수정하면 그대로 우분투 쪽에도 반영이 됩니다.

 

* 제가 사용하는 VMWare 버전은 VMWare WorkStation 16.2.3 Pro 버전입니다.

* 개인의 인터넷 환경에 따라 SSH 접속이 수월하지 않을 수 있습니다. 이럴땐 VMWare을 재실행 해보시거나, 우분투에서 SSH 재시작 명령어를 실행시켜 보세요. (우선 VMWare안에서 돌아가고 있는 우분투에 우선 인터넷이 정상적으로 연결되어 있어야 합니다.)

 

 

 

참고

https://www.youtube.com/watch?v=w8KJHY3Rplc 

본 글은 전적으로 위 영상을 참고했습니다.

제 글이 이해가 안되신다면 위 영상을 한번 보고 오시는것도 좋을 겁니다.

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.