시작하기에 앞서

- 생성한 GCP 서버는 Google Cloud 에서 제공하는 '브라우저 창에서 열기' 버튼을 클릭하여 접속할 수 있습니다.


- '브라우저 창에서 열기' 버튼을 클릭하게 되면 새로운 팝업이 등장하며, 'Authorize' 를 클릭하면 서버 접속이 완료됩니다.
- 브라우저 창에서 파일 생성 또는 코드 구현 등의 작업을 진행하고 싶으시다면, linux 명령어들과 vim 에디터를 사용하는 방법이 있습니다.
- 다만 vim 의 경우 익숙해지기 전에는 사용이 어려운 편이기 때문에, 대중적으로 많이 사용하는 코드 에디터인 VS Code 를 GCP 서버와 연결하여 사용해보려 합니다.
Background
VS Code 를 이용하여 로컬 서버와 GCP 서버 연결하기
- 본 포스팅의 목적은 새로 만든 GCP 서버에서 파일 생성 또는 코드 구현 등의 작업을 편리하게 할 수 있도록 VS Code 를 연결하는 것인데요. 로컬 서버는 뭐고, GCP 서버랑 왜 연결해야 하며, 그 과정에 VS Code 를 이용하는 이유는 무엇일까요?

- 위 그림을 통해 그 이유를 대강 파악할 수 있습니다. 로컬 서버 (본인 컴퓨터) 에 설치되어있는 VS Code 내에는, Remote-SSH 라는 extension (확장 프로그램) 이 존재하는데요. Remote-SSH extension 을 이용하면 로컬 서버와 GCP 서버를 SSH 방식으로 연결할 수 있게 되고, 연결이 완료된 이후부터는 로컬 서버에서 작업한 내용이 GCP 서버에 그대로 반영되게 됩니다.

- 사실 Google Cloud 에서 제공하는 방법인 '브라우저 창에서 열기' 도 똑같은 방법입니다. 다만 VS Code 가 아닌 브라우저를 이용하여 연결할 뿐인 것이죠.
SSH (Secure Shell)
TCP 상에 보안 채널(터널링)을 형성하여, 그 위에서, 기타 응용 프로토콜들이 안전하게 데이터 교환 가능. 적은 비용으로, 비교적 쉽게 구현 가능하고, 안전하여 널리 사용됨. - 정보통신기술용어해설
- 쉽게 말해 컴퓨터 간 데이터를 주고받는 특정 방식을 일컫는 용어로써, 뛰어난 효율 덕분에 널리 사용되는 통신 방식입니다. 세부 내용을 알고 싶으시다면, '정보통신기술용어해설' 링크를 클릭해보시길 바랍니다.
Remote-SSH를 이용하여 GCP 서버에 접속하기
Source: SSH, 정보통신기술용어해설
- 가장 먼저 해야할 것은, SSH 프로토콜을 사용하기 위해 필요한 SSH 키를 생성하는 것입니다.
ssh-keygen 명령어를 이용해서 공개키와 개인키를 생성해보도록 합시다.
- 명령창을 실행한 뒤, 아래 명령어를 실행합시다.
ssh-keygen -t rsa -f [SSH KEY 파일의 이름] -C [GCP VM LINUX 접속 계정명]
-t 옵션은 암호화 방식을 설정할 때 사용합니다. 특별한 이유가 있는 것이 아니라면, 보편적으로 사용하는 rsa 방식을 사용해주시면 됩니다.
-f 옵션은 생성할 파일의 이름을 설정할 때 사용합니다. 큰 의미는 없으니, 원하는 이름으로 설정해주시면 되겠습니다.
-C 옵션은 주석을 달 때 사용하는 옵션으로, 역시 큰 의미는 없습니다.
- 참고로 GCP VM LINUX 접속 계정명은 본인의 Google 계정명과 동일합니다.

- 명령어를 실행하면 위와 같은 결과가 나타나는데요. passphrase 의 경우 보안 강화를 위해 사용한다고 하는데, 저는 특별히 필요가 없는 것 같아서 넘어갔습니다.
- 그리고 두 개의 파일이 생성되는데, 하나는 개인키 (file_name) 이고 다른 하나는 공개키 (file_name.pub) 입니다. 이 중에서 우리가 사용할 것은 공개키입니다.
- 메모장 또는 VS Code 와 같은 프로그램을 이용하여 공개키 (file_name.pub) 를 열어보면
ssh-rsa 로 시작하는 긴 문자열이 있는데요. 문자열 전체를 복사하도록 합시다.


- 그 다음 Google Cloud 로 이동하여 실행 중인 인스턴스의 세부 정보 중 SSH 키 부분을 수정합니다. '항목 추가' 버튼을 클릭해서 아까 전에 복사한 문자열을 붙여넣은 뒤, 저장해줍시다.

- 이번에는 VS Code 로 이동하여 Extensions 에서 Remote-SSH 를 검색한 뒤 설치해줍시다.
- 설치를 완료했다면 VS Code 상에서
ctrl + shift + P 커맨드를 입력하여 명령 팔레트를 연 뒤, Remote-SSH: Add New SSH Host... 검색해서 클릭해줍시다.

ssh -i [SSH KEY 파일의 경로] [VM LINUX 계정 이름]@[VM 외부 IP]
- 그러면 위 그림과 같은 창이 나타나는데요. 여기다가 위 명령어를 입력해줍시다.
- [SSH KEY 파일의 경로] 부분에는 개인키 파일의 경로를 입력해주시면 되고, [VM LINUX 계정 이름]@[VM 외부 IP] 부분에는 GCP 서버의 계정 이름 및 IP 주소를 입력해주시면 됩니다.
- Remote-SSH extension 을 이용해서 로컬 서버와 GCP 서버 간 SSH 통신을 수행할 건데, 그러기 위해서 필요한 정보를 기록해두는 과정이라고 생각하시면 됩니다.
- 명령어를 실행하면 해당 정보를 어떤 파일에 기록할 것인지 물어보는데요. 기본 경로인
.ssh/config 파일에 기록해주시면 되겠습니다.
- 이제 로컬 서버와 GCP 서버를 연결하기 위해 필요한 과정은 모두 마쳤으니, 실제로 연결해보도록 합시다.
ctrl + shift + P 커맨드를 입력하여 명령 팔레트를 실행하고, Remote-SSH: Connect to Host... 를 찾아 실행합시다.

- 실행하면 위 그림과 같이 어떤 호스트 (서버) 와 연결할 것인지 물어보는데요. 아까 전에 등록했던 외부 IP 주소를 찾아 선택해줍시다.
- 모든 과정을 올바르게 수행했다면 VS Code 의 새로운 창이 열리면서 연결이 진행되고, 어떤 os 를 사용할지 등을 물어보는데요. 원하시는 os 를 선택하시고, continue 를 눌러주시면 연결이 완료됩니다.

- 모든 과정을 올바르게 수행했을 때, 최종적으로 연결된 화면입니다. 이제 실험하시면 됩니다!
정리
- 이번 포스팅에서는 VS Code 의 Remote-SSH extension 을 이용하여 로컬 서버와 GCP 서버를 연결하는 방법에 대해 알아보았습니다.
- 조금 귀찮기는 하지만, 비싼 GPU 서버를 무료로 사용할 수 있는 좋은 방법 중 하나 (무료 크레딧이 있을 때에만) 이니 알아두었다가 한 번씩 사용하면 될 것 같습니다.