SSH 연결에 SSH 인증서가 필요하도록 OS 로그인 설정


OS 로그인 인증서를 지원하는 VM은 SSH 키 및 SSH 인증서의 연결을 지원합니다. SSH 인증서는 다른 신뢰할 수 있는 키(이 경우 OS 로그인에서 관리하는 인증 기관)로 서명된 SSH 키입니다. 이 문서에서는 SSH 연결에 SSH 인증서가 필요하고 서명되지 않은 SSH 키의 연결을 차단하도록 OS 로그인 VM을 설정하는 방법을 설명합니다.

VM에 연결할 때 SSH 인증서가 필요하도록 OS 로그인을 설정하면 인증 기관에서 서명한 SSH 인증서만 VM에 연결할 수 있습니다. 서명되지 않은 SSH 키의 연결은 거부됩니다. SSH 인증서는 5분 후에 만료되며, 만료된 후에는 더 이상 VM에 연결하는 데 사용할 수 없으므로 새 인증서를 생성해야 합니다.

악성 사용자를 방지하기 위한 추가 보안 계층으로 SSH 연결에 SSH 인증서를 요구하도록 OS 로그인을 설정하는 것이 좋습니다. SSH 인증서는 수명이 짧고 특정 VM에만 유효하므로 보안이 침해되더라도 공격에 취약한 부분이 훨씬 작고 공격 기간이 수명이 긴 SSH 키보다 훨씬 짧습니다.

조직에서 직원 ID 제휴를 사용하는 경우 OS 로그인과 함께 직원 ID 제휴 사용을 참고하여 조직의 SSH 인증서를 사용 설정하는 방법을 알아보세요.

시작하기 전에

  • OS 로그인 설정 및 OS 로그인 IAM 역할 할당
  • 아직 설정하지 않았다면 인증을 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    2. Set a default region and zone.

제한사항

  • SSH 인증서를 사용하려면 연결하려는 VM에 OpenSSH 버전 7.4 이상이 있어야 합니다.

SSH 인증서 필요

프로젝트의 OS 로그인 VM 또는 단일 VM에 대한 모든 SSH 연결에 SSH 인증서가 필요하도록 OS 로그인을 설정할 수 있습니다. SSH 인증서가 필요하도록 OS 로그인을 설정하면 Google Cloud 콘솔 및 gcloud CLI의 SSH 연결에서 기본적으로 SSH 인증서를 사용합니다. 인증서가 필요하도록 OS 로그인을 설정하지는 않지만 인증서를 사용하여 VM에 연결하려면 SSH 인증서를 사용하여 VM에 연결 섹션에 설명된 대로 서드 파티 도구를 사용하여 연결해야 합니다.

프로젝트의 모든 OS 로그인 사용 VM에 SSH 인증서 요구

프로젝트에서 OS 로그인을 사용하는 모든 VM에 대한 모든 연결에 SSH 인증서를 요구하려면 Google Cloud 콘솔 또는 gcloud CLI를 사용하세요.

콘솔

OS 로그인 사용 VM에 대한 모든 연결에 SSH 인증서를 요구하려면 Google Cloud 콘솔을 사용하여 프로젝트 메타데이터에서 enable-osloginenable-oslogin-certificatesTRUE로 설정하세요.

  1. 메타데이터 페이지로 이동합니다.

    메타데이터로 이동

  2. 수정을 클릭합니다.

  3. 항목 추가를 클릭합니다.

    1. 필드에 enable-oslogin을 입력합니다.
    2. 필드에 TRUE를 입력합니다.
  4. 항목 추가를 클릭합니다.

    1. 필드에 enable-oslogin-certificates을 입력합니다.
    2. 필드에 TRUE를 입력합니다.
  5. 저장을 클릭합니다.

gcloud

OS 로그인 사용 VM에 대한 모든 연결에 SSH 인증서를 요구하려면 gcloud compute project-info add-metadata 명령어를 사용하여 프로젝트 메타데이터에 enable-oslogin=TRUEenable-oslogin-certificates=TRUE를 설정하세요.

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

단일 OS 로그인 사용 VM에 SSH 인증서 필요

OS 로그인을 사용하는 단일 VM에 대한 모든 SSH 연결에 인증서를 요구하려면 Google Cloud 콘솔 또는 gcloud CLI를 사용하세요.

콘솔

단일 VM에 대한 모든 연결에 SSH 인증서를 요구하려면Google Cloud 콘솔을 사용하여 인스턴스 메타데이터에서 enable-osloginenable-oslogin-certificatesTRUE로 설정합니다.

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. SSH 인증서가 필요한 VM의 이름을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 메타데이터 섹션에서 항목 추가를 클릭합니다.

    1. 필드에 enable-oslogin을 입력합니다.
    2. 필드에 TRUE를 입력합니다.
  5. 항목 추가를 클릭합니다.

    1. 필드에 enable-oslogin-certificates을 입력합니다.
    2. 필드에 TRUE를 입력합니다.
  6. 저장을 클릭합니다.

gcloud

단일 VM에 대한 모든 연결에 SSH 인증서를 요구하려면 gcloud compute instances add-metadata 명령어를 사용하여 인스턴스 메타데이터에 enable-oslogin=TRUEenable-oslogin-certificates=TRUE를 설정합니다.

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

VM_NAME을 VM 이름으로 바꿉니다.

SSH 인증서를 사용하여 VM에 연결

SSH 인증서가 필요하도록 OS 로그인을 설정하면 Google Cloud 콘솔 및 gcloud CLI의 SSH 연결에서 기본적으로 SSH 인증서를 사용합니다. 인증서가 필요한 OS 로그인을 설정하지 않으면서 인증서를 사용하여 VM에 연결하려면 서드 파티 도구를 사용하여 연결해야 합니다.

콘솔

Google Cloud 콘솔에서 브라우저에서 SSH를 통해 연결을 사용해 VM에 연결하려면 다음 단계를 따르세요.

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

gcloud beta compute ssh 명령어를 사용하여 인증서를 통해 VM에 연결합니다.

gcloud beta compute ssh VM_NAME

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

타사 도구

서드 파티 SSH 클라이언트에서 SSH 인증서를 사용하려면 다음 단계를 따르세요.

  1. SSH 키가 없는 경우 SSH 키를 만듭니다.

  2. projects.locations.signSshPublicKey 메서드를 사용하여 공개 SSH 키에 서명합니다.

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 연결할 VM이 포함된 프로젝트의 프로젝트 ID
    • LOCATION: 연결할 VM이 있는 리전
    • PUBLIC_KEY: SSH 공개 키 파일의 콘텐츠입니다.
    • COMPUTE_INSTANCE: 연결할 Compute Engine 인스턴스입니다(projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID 형식).
    • SERVICE_ACCOUNT: 인스턴스에 연결된 서비스 계정입니다. 인스턴스에 연결된 서비스 계정이 없으면 이 필드를 삭제합니다.
  3. projects.locations.signSshPublicKey 메서드의 출력에서 SSH 인증서를 복사하고 콘텐츠를 새 파일에 저장합니다.

  4. 다음 명령어를 실행하여 SSH 인증서 파일에 대한 권한을 설정합니다.

    sudo chmod 600 FILE_NAME
    

    FILE_NAME을 파일 이름으로 바꿉니다.

  5. 다음 명령어를 사용하여 VM에 연결합니다.

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    다음을 바꿉니다.

    • PATH_TO_PRIVATE_KEY: 비공개 SSH 키 파일 경로입니다.
    • PATH_TO_SSH_CERTIFICATE: SSH 인증서 파일 경로입니다.
    • USERNAME: OS 로그인 사용자 이름
    • EXTERNAL_IP: VM의 외부 IP 주소

문제 해결

SSH 인증서가 필요하도록 설정한 VM에 연결할 수 없는 경우 다음이 원인일 수 있습니다.

다음 단계