배스천 호스트를 사용하여 Linux VM에 연결


이 문서에서는 배스천 호스트 VM을 사용하여 내부 IP 주소를 통해 가상 머신(VM) 인스턴스에 연결하는 방법을 설명합니다. 배스천 호스트는 외부 IP 주소가 없는 VM이 포함된 Virtual Private Cloud(VPC) 네트워크에서 외부 진입점 역할을 수행합니다. 배스천 호스트를 사용할 때는 우선 배스천 호스트에 연결한 후 대상 VM에 연결합니다.

내부 IP 주소를 사용하여 VM에 연결하면 VM에 외부 IP 주소가 없는 경우에 유용합니다. VM에 외부 IP 주소가 있는 경우 외부 IP 주소를 사용하여 VM에 연결합니다. 외부 IP 주소가 없는 VM에 연결해야 하는 경우 배스천 호스트를 사용할 수 없으면 내부 전용 VM의 연결 옵션에 나열된 다른 방법을 검토하세요.

지원되는 운영체제

이러한 연결 방법은 Compute Engine에서 사용할 수 있는 모든 공개 Linux 이미지에 지원됩니다. Fedora CoreOS 이미지의 경우 이러한 방법을 사용하기 전에 SSH 액세스를 설정해야 합니다.

배스천 호스트 VM 만들기

비공개 클러스터 내부 네트워크 내에 클러스터를 관리할 수 있는 배스천 호스트 역할을 하는 Compute Engine VM을 만드세요.

콘솔

다음을 수행하여 배스천 호스트 VM을 만듭니다.

  1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

    1. 다음 VM 세부정보를 지정합니다.
    • 이름: VM 이름.
    • 머신 유형: 머신 유형. 소형 머신 유형(예시: e2-micro)을 선택합니다.
    • 부팅 디스크 운영체제: 모든 Linux OS.
  2. 고급 옵션 섹션을 펼친 후 다음을 수행합니다.

    1. 네트워크 인터페이스 섹션에서 대상 VM과 동일한 VPC 네트워크 및 서브넷을 선택합니다.

    2. 외부 IPv4 주소임시를 선택합니다.

  3. 만들기를 클릭하여 VM을 만들고 시작합니다.

gcloud

gcloud compute instances create 명령어를 사용하여 배스천 호스트 VM을 만듭니다.

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행하여 배스천 호스트 VM을 만듭니다.

    gcloud compute instances create VM_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET,address=""
    

    다음을 바꿉니다.

    • VM_NAME: VM의 이름입니다.
    • ZONE: VM의 영역입니다.
    • IMAGE_FAMILY: Linux 이미지 계열입니다.
    • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다.
    • SUBNET: 대상 VM과 동일한 VPC 서브넷입니다. 기본 VPC를 사용하는 경우 SUBNETdefault입니다.

VM에 연결

VM에 연결하려면 다음 탭 중 하나의 단계를 완료하세요.

gcloud

gcloud compute ssh 명령어를 실행하여 배스천 호스트를 통해 SSH를 사용하여 VM에 연결합니다.

  1. 다음 명령어를 실행하여 배스천 호스트 VM에 연결합니다.

    gcloud compute ssh BASTION_NAME

    BASTION_NAME을 배스천 호스트 VM의 이름으로 바꿉니다.

  2. 배스천 호스트 VM에서 --internal-ip 플래그를 사용하여 내부 IP 주소를 통해 기본 VM에 연결합니다.

    gcloud compute ssh VM_NAME \
        --internal-ip

    VM_NAME을 연결하려는 VM의 이름으로 바꿉니다.

OpenSSH 클라이언트

다음을 수행하여 OpenSSH 클라이언트에서 배스천 호스트를 통해 VM에 연결합니다.

  1. 아직 수행하지 않았으면 VM에 SSH 키를 추가합니다.
  2. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동하고 배스천 호스트 VM의 외부 IP 주소를 찾습니다.

    VM 인스턴스로 이동

  3. 워크스테이션에서 터미널을 엽니다.
  4. 다음 명령어를 실행하여 배스천 호스트 VM에 연결합니다.

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    다음을 바꿉니다.

    • PATH_TO_PRIVATE_KEY: VM에 추가한 공개 키에 해당하는 비공개 SSH 키 파일의 경로입니다.
    • USERNAME: 사용자 이름. 메타데이터에서 SSH 키를 관리하는 경우, 사용자 이름은 SSH 키를 만들 때 지정한 사용자 이름입니다. OS 로그인 계정의 경우 사용자 이름이 Google 프로필에 정의되어 있습니다. 예를 들면 cloudysanfrancisco_example_com 또는 cloudysanfrancisco입니다.
    • EXTERNAL_IP: VM의 외부 IP 주소입니다.
  5. 배스천 호스트 VM에서 다음 명령어를 사용하여 VM의 내부 IP 주소를 통해 연결합니다.

    ssh USERNAME@INTERNAL_IP

    다음을 바꿉니다.

    • USERNAME: 사용자 이름. 메타데이터에서 SSH 키를 관리하는 경우, 사용자 이름은 SSH 키를 만들 때 지정한 사용자 이름입니다. OS 로그인 계정의 경우 사용자 이름이 Google 프로필에 정의되어 있습니다. 예를 들면 cloudysanfrancisco_example_com 또는 cloudysanfrancisco입니다.
    • INTERNAL_IP: VM의 내부 IP 주소입니다.

PuTTY 앱

다음을 수행하여 PuTTY를 사용하여 배스천 호스트를 통해 VM에 연결합니다.

  1. 아직 추가하지 않았으면 배스천 호스트 VM에 SSH 키를 추가합니다.
  2. 워크스테이션에 PuTTY 앱이 아직 설치되지 않았으면 PuTTY 패키지 파일을 다운로드합니다.
  3. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동하여 연결하려는 VM의 내부 IP 주소를 찾습니다.

    VM 인스턴스로 이동

  4. PuTTY 앱을 엽니다. 연결 구성 창이 열립니다.
  5. Host Name 필드에 SSH 키와 연관된 사용자 이름 및 연결할 VM의 외부 IP 주소를 입력합니다. 다음 형식을 사용합니다.

    USERNAME@EXTERNAL_IP

    다음을 바꿉니다.

    • USERNAME: 사용자 이름. 메타데이터에서 SSH 키를 관리하는 경우, 사용자 이름은 SSH 키를 만들 때 지정한 사용자 이름입니다. OS 로그인 계정의 경우 사용자 이름이 Google 프로필에 정의되어 있습니다. 예를 들면 cloudysanfrancisco_example_com 또는 cloudysanfrancisco입니다.
    • EXTERNAL_IP: VM의 외부 IP 주소입니다.
  6. 카테고리 메뉴에서 연결 > SSH > 인증으로 이동합니다.
  7. 인증용 비공개 키 파일 필드에서 VM에 추가한 공개 파일에 해당하는 비공개 SSH 키 파일을 선택합니다.
  8. 인증 매개변수 섹션에서 에이전트 전달 허용을 선택합니다.
  9. 열기를 클릭하여 배스천 호스트 VM에 연결합니다.
  10. 배스천 호스트 VM에서 다음 명령어를 사용하여 VM의 내부 IP 주소를 통해 연결합니다.

    ssh USERNAME@INTERNAL_IP

    다음을 바꿉니다.

    • USERNAME: 사용자 이름. 메타데이터에서 SSH 키를 관리하는 경우, 사용자 이름은 SSH 키를 만들 때 지정한 사용자 이름입니다. OS 로그인 계정의 경우 사용자 이름이 Google 프로필에 정의되어 있습니다. 예를 들면 cloudysanfrancisco_example_com 또는 cloudysanfrancisco입니다.
    • INTERNAL_IP: VM의 내부 IP 주소입니다.

문제 해결

실패한 SSH 연결 진단 및 해결 방법을 찾으려면 SSH 문제 해결을 참조하세요.

다음 단계