Milky's note

[GCP] Google Cloud SDK로 SSH 터널링 (로컬 cmd에서 서버 접속) 본문

DevOps/GCP

[GCP] Google Cloud SDK로 SSH 터널링 (로컬 cmd에서 서버 접속)

밀뿌 2024. 12. 18. 19:43

내가 현재 진행하고 있는 프로젝트는 GCP 기반으로 폐쇄망을 사용한다.

추가로 Public IP도 사용하지 않고 GCP 내부 IP만 사용한다.

 

초반에 Airflow를 Public IP로 구성을 해놓았는데 내부 IP만 허용이 되는 정책으로 변경이 되었다...

어쩔 수 없이 Airflow 서버를 내부 IP만 사용되게 하였는데 당연하게도 Airflow UI 접속이 불가능해졌다 ! 

 

그래서 내가 생각한 방법은 로컬에서 서버로 접속하기 ! 

내부 IP만 사용하지만 SSH 터널링을 사용하면 서버로 접속이 가능하다 !

 

1. 로컬에 SSH 연결

 외부 IP 없이 Airflow UI에 접속하기 위해 SSH 터널링을 사용할 수 있다.

이 방법은 로컬에서 GCP의 VM 인스턴스에 SSH로 연결한 후,

Airflow UI에 접근할 수 있도록 포트를 포워딩하는 것이다.

 

먼저 Airflow를 접속하려는 로컬에 Google CLI를 설치한다.

[링크 참고]

https://cloud.google.com/sdk/docs/install?hl=ko

 

 

gcloud CLI 설치  |  Google Cloud CLI Documentation

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 gcloud CLI 설치 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에는 Google Cloud CLI

cloud.google.com

 

 

설치 방법은 아주 간단하며 몇 번의 인증이면 완료가 된다 ! 

 

그리고 설치한 Shell을 실행 ! 

 

먼저 아래 명령어를 입력해준다.

1. 현재 프로젝트 설정현재 사용하고자 하는 프로젝트를 설정
>> gcloud config set project <PROJECT_NAME>

2. 프로젝트 확인설정한 프로젝트가 올바른지 확인
>> gcloud config get-value project

 

 

내가 터널링하려는 프로젝트를 설정해주었고, 확인까지 마쳤다.

 

다음 명령어를 입력해서 GCP 인스턴스에 연결이 되나 확인한다.

명령어를 입력하여 GCP 인스턴스에 연결되나 확인
>> gcloud compute ssh <INSTANCE_NAME> --zone=asia-northeast3-a

 

이 명령어를 입력하고 조금 기다리면 새로운 터미널 (나의 경우 putty)가 열리면서 서버 로그인에 성공한다.

 

연결이 성공하면 로컬 머신의 터미널에서 GCP 인스턴스의 셀에 접근할 수 있게 된다.

이후 SSH 터널링을 설정하여 내부 IP를 통해 Airflow UI에 접근할 수 있다.

 

그리고 아래 명령어를 이용해 터널링을 해준다.

※ 주의해야할 점은 --sh-flag에서 앞에는 로컬에서 들어갈 PORT이고,

뒤에는 인스턴스에서 실행되고 있는 서비스의 PORT이다.

gcloud compute ssh <INSTANCE_NAME> --project <PROJECT_NAME> 
--zone asia-northeast3-a --ssh-flag="-L" --ssh-flag="<로컬 PORT>:localhost:<인스턴스 PORT>"

 

외부 IP가 없어서 디폴트로 IAP 터널링을 사용한다는 문구가 뜨고 다시 새로운 터미널이 뜨고 서버에 접속이 완료된다.

그 이후에 로컬 브라우저에서 127.0.0.1과 위에서 포워딩해준 port로 접속을 하면

원하는 서버에 터널링 되어 접속이 가능한 것을 확인 할 수 있다.

 

스크린 샷은 Airflow 서버가 아니지만 다른 모든 인스턴스에서도 다 터널링이 가능하다는 것을 보여주기 위해

첨부하였다 !

Comments