GCP

[GCP] VM 인스턴스를 터미널 도구를 이용하여 SSH 접속 설정

코딩하는흑구 2023. 3. 3. 00:21

안녕하세요. 

 

지난 gcp vm 인스턴스 생성 예제에 이어서 해당 vm에 접속하는 방법에 대해서 공유하고자 합니다.

 

저는 우선 두가지 방법을 주로 사용하고 있는데요.

 

1. gcp 내부에서 제공하는 ssh를 사용하여 브라우저창에서 접속

2. mac 의 terminal 혹은 iterms와 같은 client 툴을 활용하여 접속.

 


 

브라우저창에서 SSH 접속

aws와 달리 gcp에서는 브라우저에서 물리서버에 접근할 수 있도록 ssh설정을 미리 해줍니다. 반면 aws는 pem 키 혹은 ppk 설정을 통해서 개발자한테 맡기는 형태로 알고 있는데 이점은 gcp의 간편한 방법이라고 생각합니다.

 

vm 인스턴스 목록에서 연결탭에 SSH라는 글자를 찾아보실 수 있을겁니다.

 

해당 버튼을 클릭해보겠습니다.

처음엔 왼쪽 화면처럼 "ssh키를 vm에 전송중입니다." 라는 문장과 함께 내부적으로 ssh 접속을 시도합니다. 그리고 이내 몇초가 되지 않아 오른쪽 화면처럼 ssh연결이 완료됩니다. gcp에서는 이렇게 vm에 직접 브라우저로 접속할 수 있도록 강력한 기능을 제공합니다. 클라이언트 입장에서는 서버를 이용하는데 있어서 별도의 귀찮은 공개키 작업이 들어가지 않아서 좋긴 합니다.

 

하지만 큰 단점이 있습니다. 바로 브라우저가 가진 단점이기도 한데요.. 바로 브라우저 세션이 만료되면 해당 세션도 만료되어 새로고침을 하더라도 재연결하지 못하고 다시 gcp vm 목록에서 위에서 하던 행동을 똑같이 해주어야 한다는 것입니다. 이것은 조금 안타깝습니다ㅠㅠ 그리고 본인은 mac 사용자인지라 그많은 크롬중에서 저 조그만걸 찾기란 어렵기도 하고요..ㅠㅠ

 


외부 Client로 접속하기

그래서 저는 외부 Client로 접속하여 사용합니다. 공개키 이런 작업이 귀찮기는하지만 한번 귀찮을 작업을 해두면 브라우저 세션에 구애받지 않고 작업을 쉽게할 수 있는 것 같습니다.

 

우선 한번 해보겠습니다.

 

위처럼 "다른 SSH 클라이언트 사용" 버튼을 눌러보면 해당 링크로 연결되는데.. (혹시 시대가 지나 해당 링크가 제대로 안나온다면 댓글로 알려주세요. 업데이트 해놓겠습니다.)  

 

해당 페이지를 network에 대해서 빠삭하신분이라면 쉽게쉽게 이해하시겠지만 많은 초급자들은 아닐겁니다. 따라서 그냥 이것만 외워두시면 됩니다.

 

우선 ssh 연결에서는 어떤 열쇠가 필요합니다. 그 열쇠는 공개키/개인키(비공개키) 입니다. 그중 공개키는 gcp 서비스에 등록할 예정이며 우리는 ssh 연결을 할때 개인키를 이용해서 문을 따고 들어갈겁니다. 이는 비대칭키라고 불리우는 암호화 방식이며 이에 대해서는 해당 예제로만 설명하겠습니다. 현재부터는 ssh 키로 부르겠습니다. 

 

어쨌든 우리는 ssh 키를 만들어야 gcp vm에 자유롭게 드나들 수 있습니다. 해당 문서에서 다음을 찾아봅시다.

해당 링크를 클릭하면 접속하실 수 있습니다. 어쨌든 접속했다면 ssh 키를 만들어봅시다.

 

ssh키 쌍을 만들기 위해서는 ssh-keygen 명령어를 사용해야합니다. 그 전에 위의 빨간색 부분을 클릭해서 KEY_FILENAME 과  USERNAME을 수정해주세요. 저는 blackdog-elasticsearch 라는 이름의 ssh 키를 만들고 VM 사용자 이름은 wsh0821 입니다. 이부분은 잘 보고 진행해주세요.

 

작성이 완료되었다면 복사해줍니다. 해당 명령어를 원하시는 클라이언트 툴에서 입력해줍니다. (본인은 MacOS를 사용하였습니다.)

passphrase는 별도로 입력해주지는 않았고 쭉 엔터를 입력하니 키가 생성되었다는 메시지가 나왔습니다.

~/.ssh 경로 아래에 ssh 키쌍이 잘 생성된 것을 확인하였습니다. 두 파일중에서 .pub으로 끝나는 파일을 출력해봅니다. 출력을 위해 cat 명령어를 사용하겠습니다.

 

저의 경우는 이렇게 나왔는데 이 부분을 출력한 이유는 아래에 나오니 잘 출력해두시기 바랍니다.

 

이제 제가 위에서 말했듯 ssh 키 쌍이 생성되었으니 gcp는 이제 이 열쇠를 가지고 본인들의 vm에 드나들 수 있는 유저인지 판단하게 됩니다. 그 판단척도로써 gcp는 공개키를 가져가고 저는 개인키를 소유하여 드나들 수 있는 유저인지 판단하도록 구조를 만들겠습니다.

 

우선 gcp 도큐먼트 페이지에서 맨 아래로 가보시면 다음단계라고 나와있는데 아래와 같이 "VM에 SSH 키를 추가하는 방법"이 있을 것입니다. 이를 클릭해줍니다.

 

해당 페이지에는 여러가지 방법이 있는데요. 그 중에서 저는 "프로젝트 메타데이터에 ssh 키 추가" 를 선택해서 진행해보겠습니다. 어차피 해당 vm 인스턴스가 한 프로젝트 내에서 관리되기 때문에 메타데이터에서 공동으로 관리해주는게 편할 수 있습니다.

해당 위치로 가서 "메타데이터 이동" 이라는 버튼을 클릭해줍니다. 그러면 메타데이터 페이지로 이동하게 되는데요. 그중에서 헷갈리지마시고 ssh 키 라는 탭으로 이동해줍니다.

 

저는 기존에 쓰던 ssh 공개키를 등록해놨기 때문에 두개가 이미 있는데 처음 하시는분들은 비어있을 겁니다. 아까 우리가 위에서 cat으로 출력해둔 ssh 키 쌍의 공개키를 여기에 등록만 해주면 됩니다. 수정버튼을 클릭하여 넘어갑니다.

 

위에서 cat 명령어로 출력해놓은 공개키를 복사하여 붙여넣기 해주세요. 양 옆에 띄어쓰기 한칸이라도 잘못 복사되면 접속되지 않으니 주의해서 복사해주세요. 

 

그리고 저장을 누릅니다.

 

이제 ssh 클라이언트로 돌아와서 ssh 명령어로 접근을 시도합니다.!

 

제가 사용한 명령어는 아래와 같습니다.

ssh -i ~/.ssh/blackdog-elasticsearch wsh0821@34.64.185.153

ssh -i ~/.ssh/ssh키파일명(.pub 아님주의) vm인스턴스유저명@vm인스턴스IP

이렇게 됩니다.

 

잘 접속이 되는군요. 고생하셨습니다.