고급 방법을 사용하여 인스턴스에 연결

자체 사용자 인증 정보를 관리하거나, 타사 도구를 사용하거나, 대체 연결 경로를 사용하여 인스턴스에 연결해야 하는 경우 다음 고급 방법이 인스턴스에 연결에 설명된 표준 방법보다 요구사항에 더 적합할 수 있습니다.

다음은 Linux 및 Windows Server 인스턴스에 연결하는 데 사용할 수 있는 고급 방법입니다.

시작하기 전에

인스턴스에 공개 SSH 키 제공

일반적으로 Compute Engine은 인스턴스 연결에 설명된 방법을 사용하여 연결할 때마다 SSH 키를 만들고 관리합니다.

그러나 타사 도구를 사용하여 연결할 때와 같이 자체 SSH 키를 사용해야 하는 경우 자체 SSH 키 쌍을 만들고 인스턴스에 공개 SSH 키 파일을 제공해야 연결할 수 있습니다.

자체 SSH 키 쌍을 만드는 방법 및 공개 SSH 키 파일을 찾는 방법에 익숙하지 않은 경우 새 SSH 키 만들기SSH 키 찾기를 참조하세요.

인스턴스에 SSH 키를 제공하려면 다음 방법 중 하나를 사용합니다.

  • (권장) OS 로그인을 사용 설정하고 IAM 역할을 사용하여 Google 계정 또는 관리형 사용자 계정을 통해 공개 SSH 키를 인스턴스에 제공합니다. 이렇게 하려면 OS 로그인을 사용한 인스턴스 액세스 권한 관리의 단계에 따라 OS 로그인을 사용 설정하고 역할을 만듭니다. 그런 다음 사용자 계정에 SSH 키 추가 섹션을 참조하여 인스턴스에 연결하는 데 사용하려는 역할에 공개 키를 추가합니다.

  • (권장되지 않음) 프로젝트 또는 인스턴스 메타데이터를 편집하여 SSH 키를 수동으로 추가하고 삭제합니다. 메타데이터에서 SSH 키 관리를 참조하세요. 이 방법에는 불필요한 위험과 복잡성이 있으며 위의 OS 로그인 방법이 작동하지 않는 경우에만 권장됩니다. 자세한 내용은 수동 키 관리 위험을 참조하세요.

  • 이미 액세스 권한이 있는 다른 사람(예: 조직의 시스템 관리자)이 인스턴스를 관리하는 경우 공개 SSH 키 파일을 제공하고 수동으로 구성하도록 요청할 수 있습니다. 일반적으로 여기에는 인스턴스에 연결하고 공개 키 파일을 인스턴스의 홈 디렉터리에 복사하고 파일에 대한 권한을 변경하는 것이 포함되지만 조직에서 인스턴스를 관리하는 방법에 따라 달라집니다.

타사 도구를 사용하여 연결

공개 SSH 키를 인스턴스에 제공한 후 타사 SSH 도구와 일치하는 비공개 SSH 키를 사용하여 연결할 수 있습니다.

연결하려면 로컬 운영체제 탭을 클릭하고 다음 단계를 따르세요.

Linux 및 macOS

Linux 또는 macOS 시스템에서 SSH를 사용하여 연결하려면 로컬 터미널에서 내장 ssh 명령어를 사용합니다.

  1. 아직 수행하지 않은 경우 사용 가능한 옵션 중 하나를 사용하여 공개 SSH 키를 인스턴스에 제공합니다. 이러한 키가 없으면 진행할 수 없습니다.

  2. Console에서 인스턴스 페이지로 이동하거나 아래 버튼을 클릭하여 연결하려는 인스턴스의 외부 IP 주소를 찾습니다.

    인스턴스 페이지로 이동

  3. 로컬 터미널에서 비공개 SSH 키 파일, SSH 키와 연관된 사용자 이름, 연결할 인스턴스의 외부 IP 주소와 함께 ssh 명령어를 사용합니다. 예를 들면 다음과 같습니다.

    ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]

    각 항목의 의미는 다음과 같습니다.

    • [PATH_TO_PRIVATE_KEY]비공개 SSH 키 파일의 경로입니다.
    • [USERNAME]은 인스턴스에 연결하는 사용자의 사용자 이름입니다. 수동으로 SSH 키를 만든 경우 SSH 키를 만들 때 지정한 사용자 이름이어야 합니다.
    • [EXTERNAL_IP_ADDRESS]는 인스턴스의 외부 IP 주소입니다.

    연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

Windows (PuTTY)

Windows에는 내장 SSH 클라이언트가 포함되어 있지 않으므로 타사 클라이언트를 다운로드하여 설치해야 합니다. 다음 안내에서는 PuTTY를 사용하여 연결하는 방법을 보여줍니다.

PuTTY를 사용하여 Windows에서 인스턴스에 연결하려면 다음 단계를 따르세요.

  1. 아직 수행하지 않은 경우 사용 가능한 옵션 중 하나를 사용하여 공개 SSH 키를 인스턴스에 제공합니다. 이러한 키가 없으면 진행할 수 없습니다.

  2. Console에서 인스턴스 페이지로 이동하거나 아래 버튼을 클릭하여 연결하려는 인스턴스의 외부 IP 주소를 찾습니다. 이후 단계에서 사용할 수 있도록 유지합니다.

    인스턴스 페이지로 이동

  3. 아직 다운로드하지 않은 경우 putty.exe를 다운로드합니다.

  4. putty.exe를 실행하여 PuTTY를 엽니다. 연결 구성 창이 열립니다.

  5. 연결 구성 페이지의 Host Name(호스트 이름) 필드에 SSH 키와 연관된 사용자 이름 및 연결할 인스턴스의 외부 IP 주소를 다음 형식으로 입력합니다.

    [USERNAME]@[EXTERNAL_IP_ADDRESS]

    각 항목의 의미는 다음과 같습니다.

    • [USERNAME]은 인스턴스에 연결하는 사용자의 사용자 이름입니다. SSH 키를 만들 때 지정한 사용자 이름이어야 합니다.
    • [EXTERNAL_IP_ADDRESS]는 연결할 인스턴스의 외부 IP 주소입니다.

      다음 스크린샷의 예시를 참조하세요.

      호스트 이름 필드를 jane_doe@203.0.113.2로 설정

  6. 왼쪽의 Category(카테고리) 메뉴에서 Connection(연결) > SSH > Auth(인증)로 이동합니다.

  7. Private key file for authentication(인증용 비공개 키 파일) 필드에서 비공개 키 파일의 위치를 찾습니다.

    다음 스크린샷의 예시를 참조하세요.

    비공개 키 파일 필드에 my-ssh-key.ppk 파일을 가리키는 경로 설정

  8. Open(열기)을 클릭하여 인스턴스에 연결된 터미널을 엽니다.

    연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

Chrome(SSH 앱)

Chromebook 또는 Chrome이 설치된 운영체제는 SSH 클라이언트로 Secure Shell 앱을 사용합니다. Secure Shell 앱에서 인스턴스에 연결하려면 다음 단계를 따르세요.

  1. 아직 수행하지 않은 경우 사용 가능한 옵션 중 하나를 사용하여 공개 SSH 키를 인스턴스에 제공합니다. 이러한 키가 없으면 진행할 수 없습니다.

  2. Chromebook 또는 Chrome 브라우저에 Secure Shell 앱을 설치하지 않은 경우 설치합니다.

  3. Console에서 인스턴스 페이지로 이동하거나 아래 버튼을 클릭하여 연결하려는 인스턴스의 외부 IP 주소를 찾습니다. 이후 단계에서 사용할 수 있도록 유지합니다.

    인스턴스 페이지로 이동

  4. Chrome 브라우저 탭에서 Secure Shell 앱을 엽니다.

  5. SSH 키 쌍과 연관된 사용자 이름 및 연결할 인스턴스의 외부 IP 주소를 다음 형식으로 입력합니다.

    [USERNAME]@[EXTERNAL_IP_ADDRESS]

    각 항목의 의미는 다음과 같습니다.

    • [USERNAME]은 인스턴스에 연결하는 사용자의 사용자 이름입니다. SSH 키를 만들 때 지정한 사용자 이름이어야 합니다.
    • [EXTERNAL_IP_ADDRESS]는 연결할 인스턴스의 외부 IP 주소입니다.
  6. Identity(ID) 필드에서 인스턴스에 연결하는 데 사용할 비공개 SSH 키 파일을 선택합니다. 필요한 경우 Import(가져오기)를 클릭하여 로컬 워크스테이션에서 비공개 키 파일을 선택합니다.

  7. Connect(연결)를 클릭하여 인스턴스에 연결합니다.

    연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

다른 SSH 옵션

위에서 설명한 옵션 외에도 SSH를 사용하여 인스턴스에 연결하기 위한 다른 옵션은 다음과 같습니다.

외부 IP 주소가 없는 인스턴스에 연결

외부 IP 주소가 없는 격리된 인스턴스(예: 외부 네트워크와 의도적으로 격리된 인스턴스)가 있는 경우 다음 방법을 통해 Google Cloud VPC(Virtual Private Cloud) 네트워크에서 내부 IP 주소를 사용하여 연결할 수 있습니다.

VPN을 통한 연결

가상 사설망(VPN)을 사용하여 외부 IP 주소 없이 인스턴스에 연결하려면 도달하려는 인스턴스와 동일한 VPN에 이미 연결된 컴퓨터가 있어야 합니다. 예를 들어 로컬 온프레미스 네트워크가 Google Cloud VPC와 공유하는 VPN이 있을 수 있습니다. 이러한 경우 gcloud 명령줄 도구, Linux 및 macOS의 SSH, Windows의 PuTTY와 같은 타사 SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

자세한 내용은 다음 탭을 참조하세요.

gcloud

--internal-ip 플래그가 지정된 gcloud compute ssh 명령어를 사용하여 외부 IP 주소 없이 인스턴스에 연결합니다.

gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip

여기에서 [INTERNAL_INSTANCE_NAME]은 연결할 인스턴스의 이름입니다.

연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

Linux 및 macOS

Linux 또는 macOS 워크스테이션에서 외부 IP 주소가 없는 인스턴스에 연결하려면 다음 단계를 따르세요.

  1. 사용 가능한 옵션 중 하나를 사용하여 인스턴스에 공개 SSH 키를 제공합니다. 이러한 키가 없으면 진행할 수 없습니다.

  2. 로컬 머신에서 ssh-agent를 시작하여 SSH 키를 자동으로 관리합니다.

    $ eval ssh-agent $SHELL
    
  3. ssh-add 명령어를 사용하여 비공개 SSH 키를 로컬 컴퓨터에서 에이전트에 로드하고 비공개 SSH 키를 모든 SSH 명령어의 인증에 사용합니다.

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    여기에서 [PRIVATE_KEY]는 비공개 키 파일의 이름입니다.

  4. Console에서 인스턴스 페이지로 이동하거나 아래 버튼을 클릭하여 연결하려는 인스턴스의 내부 IP 주소를 찾습니다.

    인스턴스 페이지로 이동

  5. 로컬 터미널에서 비공개 SSH 키와 연관된 사용자 이름 및 연결할 인스턴스의 내부 IP 주소와 함께 ssh 명령어를 사용합니다. 예를 들면 다음과 같습니다.

    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    각 항목의 의미는 다음과 같습니다.

    • [USERNAME]은 인스턴스에 연결하는 사용자의 사용자 이름입니다. SSH 키를 만들 때 지정한 사용자 이름이어야 합니다.
    • [INTERNAL_INSTANCE_IP_ADDRESS]는 연결할 인스턴스의 내부 IP 주소입니다.

연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

Windows (PuTTY)

Windows 워크스테이션에서 외부 IP 주소가 없는 인스턴스에 연결하려면 다음 단계를 따르세요.

  1. 아직 수행하지 않은 경우 사용 가능한 옵션 중 하나를 사용하여 공개 SSH 키를 인스턴스에 제공합니다. 이러한 키가 없으면 진행할 수 없습니다.

  2. Console에서 인스턴스 페이지로 이동하거나 아래 버튼을 클릭하여 연결하려는 인스턴스의 내부 IP 주소를 찾습니다.

    인스턴스 페이지로 이동

  3. 외부 IP 주소를 지정하는 대신 연결할 인스턴스의 내부 주소를 지정하는 것 이외에 Windows에서 PuTTY를 사용하여 인스턴스에 연결합니다.

    연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

배스천 호스트를 통한 연결

외부 IP 주소가 없는 인스턴스에 연결하는 또 다른 방법은 배스천 호스트를 통해 연결하는 것입니다. 배스천 호스트를 사용하면 다른 피어링된 VPC 네트워크의 인스턴스에 연결할 수도 있습니다.

Linux 및 macOS에서 배스천 호스트를 통해 인스턴스에 연결하려면 gcloud 명령줄 도구 또는 SSH를 사용합니다. Windows에서 연결하려면 PuTTY와 같은 타사 SSH 클라이언트를 사용합니다.

다른 방법과 마찬가지로 배스천 호스트에서 다른 인스턴스에 연결하려면 비공개 SSH 키가 필요합니다. 이러한 키를 관리하는 방법에는 여러 가지가 있습니다.

  • gcloud 명령줄 도구를 설치하고 비공개 키를 관리하도록 구성합니다.
  • SSH 클라이언트에서 에이전트 전달을 사용하여 비공개 키를 배스천 호스트 인스턴스로 전달합니다.

gcloud

gcloud 명령줄 도구를 사용하면 비공개 SSH 키를 배스천 호스트로 전달하지 않고 외부 IP 주소가 없는 인스턴스에 연결할 수 있습니다. 이렇게 하려면 로컬 워크스테이션과 배스천 호스트 인스턴스에 gcloud를 설치합니다(아직 설치하지 않은 경우).

gcloud 명령줄 도구를 사용하여 외부 IP 주소 없이 인스턴스에 연결합니다.

  1. 명령어에 --scopes compute-rw를 포함하여 배스천 호스트 인스턴스의 서비스 계정에 대한 읽기/쓰기 Compute Engine API 액세스 범위를 설정합니다. 자세한 내용은 인스턴스의 서비스 계정 및 액세스 범위 변경 문서를 참조하세요.

  2. OS 로그인(권장) 또는 프로젝트 메타데이터를 사용하여 배스천 호스트가 공개 SSH 키에 액세스할 수 있도록 필요한 IAM 권한을 부여합니다.

    이제 배스천 호스트의 서비스 계정이 공개 SSH 키를 적용할 수 있습니다.

  3. Linux 배스천 호스트 인스턴스에 연결합니다.

    gcloud compute ssh [EXTERNAL_INSTANCE_NAME]
    

    여기에서 [EXTERNAL_INSTANCE_NAME]은 내부 네트워크에 액세스하는 데 사용하는 배스천 호스트 인스턴스의 이름입니다.

  4. Linux 배스천 호스트 인스턴스에서 --internal-ip 플래그와 함께 gcloud compute ssh 명령어를 사용하여 내부 IP 주소를 사용하는 인스턴스에 연결합니다.

    gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip
    

    여기에서 [INTERNAL_INSTANCE_NAME]은 연결할 인스턴스의 이름입니다.

연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

Linux 및 macOS

비공개 키를 배스천 호스트 인스턴스에 전달해야 하는 경우 ssh-agent에 키를 추가해야 합니다. 그 다음 gcloud compute ssh 명령어 또는 ssh 명령어를 사용하여 배스천 호스트에 최초 연결을 설정하고 SSH 에이전트를 통해 키를 전달합니다. 이 프로세스는 Linux 및 macOS 워크스테이션에서만 작동합니다. Windows 워크스테이션에서 배스천 호스트에 비공개 키를 전달해야 할 때는 PuTTY 안내를 따르세요.

Linux 또는 macOS 워크스테이션에서 외부 IP 주소가 없는 인스턴스에 연결하는 방법은 다음과 같습니다.

  1. 사용 가능한 옵션 중 하나를 사용하여 공개 SSH 키를 제공합니다. Linux 배스천 호스트 인스턴스와 외부 IP 주소가 없는 인스턴스 모두에게 이 공개 SSH 키를 제공해야 합니다.

  2. 로컬 머신에서 ssh-agent를 시작하여 SSH 키를 자동으로 관리합니다.

    $ eval ssh-agent $SHELL
    
  3. ssh-add 명령어를 사용하여 비공개 SSH 키를 로컬 컴퓨터에서 에이전트에 로드하고 비공개 SSH 키를 모든 SSH 명령어의 인증에 사용합니다.

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    여기에서 [PRIVATE_KEY]는 비공개 키 파일의 이름입니다.

  4. Linux 배스천 호스트 인스턴스의 외부 IP 주소를 찾고, 연결할 내부 인스턴스의 내부 IP 주소를 찾습니다. 주소는 인스턴스 페이지의 외부 IP 열과 내부 IP 열에서 찾을 수 있습니다.

    인스턴스 페이지로 이동

  5. ssh 또는 gcloud compute ssh를 사용하여 Linux 배스천 호스트 인스턴스에 연결합니다. 어느 명령어를 사용하든 -A 인수를 포함하여 인증 에이전트 전달을 사용하도록 설정합니다.

    ssh를 사용하여 Linux 배스천 호스트 인스턴스에 연결하고 비공개 키를 전달합니다.

    $ ssh -A [USERNAME]@[BASTION_HOST_EXTERNAL_IP_ADDRESS]

    각 항목의 의미는 다음과 같습니다.

    • [USERNAME]은 SSH 키에 연결된 이름입니다.
    • [BASTION_HOST_EXTERNAL_IP_ADDRESS]는 내부 네트워크에 액세스하는 데 사용하는 배스천 호스트 인스턴스의 외부 IP 주소입니다.

    gcloud compute ssh 명령어를 사용하여 배스천 호스트 인스턴스에 연결하고 비공개 키를 전달할 수도 있습니다. 이 옵션에서는 gcloud 명령줄 도구를 사용하여 배스천 호스트 인스턴스에 연결한 다음 전달된 사용자 인증 정보와 함께 일반적인 ssh를 사용하여 내부 IP 주소에 연결할 수 있습니다.

    gcloud compute ssh --ssh-flag="-A" [BASTION_HOST_INSTANCE_NAME]
    

    여기에서 [BASTION_HOST_INSTANCE_NAME]은 내부 네트워크에 액세스하는 데 사용하는 배스천 호스트 인스턴스의 이름입니다.

  6. Linux 배스천 호스트 인스턴스에서 SSH를 사용하여 외부 IP 주소가 없는 인스턴스에 연결합니다.

    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    각 항목의 의미는 다음과 같습니다.

    • [USERNAME]은 SSH 키에 연결된 이름입니다.
    • [INTERNAL_INSTANCE_IP_ADDRESS]는 연결할 인스턴스의 내부 IP 주소입니다.

연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

Windows (PuTTY)

Windows 워크스테이션에서 외부 IP 주소가 없는 인스턴스에 연결하는 방법은 다음과 같습니다.

  1. 사용 가능한 옵션 중 하나를 사용하여 공개 SSH 키를 제공합니다. Linux 배스천 호스트 인스턴스와 외부 IP 주소가 없는 인스턴스 모두에게 이 공개 SSH 키를 제공해야 합니다.

  2. Linux 배스천 호스트 인스턴스의 외부 IP 주소를 찾고, 연결할 내부 인스턴스의 내부 IP 주소를 찾습니다. 주소는 인스턴스 페이지의 외부 IP 열과 내부 IP 열에서 찾을 수 있습니다.

    인스턴스 페이지로 이동

  3. PuTTY를 사용하여 Linux 배스천 호스트 인스턴스에 연결합니다. 비공개 SSH 키를 배스천 호스트에 전달하려면 다음 스크린샷과 같이 Allow agent forwarding(에이전트 전달 허용) 설정을 사용합니다.

    연결 중인 인스턴스에 대한 에이전트 전달 허용

  4. SSH를 사용하여 Linux 배스천 호스트 인스턴스에서 외부 IP 주소가 없는 인스턴스에 연결합니다.

    $ ssh [USERNAME]@[INTERNAL_IP_ADDRESS]
    

    각 항목의 의미는 다음과 같습니다.

    • [USERNAME]은 인스턴스에 연결하는 사용자의 사용자 이름입니다. SSH 키를 만들 때 지정한 사용자 이름이어야 합니다.
    • [INTERNAL_IP_ADDRESS]는 연결할 인스턴스의 내부 IP 주소입니다.

연결한 후 이 터미널을 사용하여 인스턴스에서 명령어를 실행합니다. 인스턴스 사용을 완료한 후 exit 명령어를 사용하여 연결을 해제합니다.

IAP를 통해 연결

IAP의 TCP 전달 기능과 함께 SSH를 사용하면 SSH 연결이 HTTPS 안에 래핑됩니다. 그런 다음 IAP의 TCP 전달 기능이 원격 인스턴스로 연결을 보냅니다.

IAP로 원격 인스턴스에 연결하는 방법은 TCP 전달을 위한 IAP 사용을 참조하세요.

인스턴스에 root 사용자로 연결

기본적으로 공개 이미지 및 대부분의 일반적인 운영체제에서는 SSH를 사용한 루트 로그인을 허용하지 않습니다. 인스턴스는 SSH를 사용하여 루트 방식으로 작동하도록 구성한 경우에만 루트로 연결할 수 있습니다.

/etc/ssh/sshd_config SSH 구성 파일의 PermitRootLogin 매개변수를 no로 설정하는 것이 좋습니다. 이 매개변수 설정으로 인해 프로젝트 또는 인스턴스 메타데이터에서 root의 SSH 키를 지정하더라도 루트 사용자로 인스턴스에 연결할 수 없습니다. 루트 권한이 필요하면 sudo를 통해 명령어를 실행하여 해당 권한을 얻을 수 있습니다.

SSH를 루트 사용자로 허용하도록 인스턴스를 구성하고 해당 인스턴스에서 루트 사용자에 대한 SSH 키를 구성한 경우 인스턴스 이름 앞에 지정된 root@가 포함된 gcloud compute ssh 명령어를 사용하여 루트로 연결할 수 있습니다.

gcloud compute ssh --project [PROJECT_ID] --zone [ZONE] root@[INSTANCE_NAME]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 인스턴스가 포함된 프로젝트의 ID입니다.
  • [ZONE]은 인스턴스가 있는 영역의 이름입니다.
  • [INSTANCE_NAME]은 인스턴스의 이름입니다.

PowerShell을 사용하여 Windows 인스턴스에 연결

PowerShell이 포함된 Windows 워크스테이션이 있는 경우 원격 PowerShell 세션을 통해 Windows Server 인스턴스에 연결할 수 있습니다. 이는 SSH를 사용하여 Linux 인스턴스에 연결하는 프로세스와 비슷합니다.

  1. 아직 원격 Windows 인스턴스에 사용자 이름과 비밀번호를 만들지 않은 경우 Windows 비밀번호를 만들거나 재설정합니다.

  2. Windows Server 인스턴스가 있는 Google Cloud VPC 네트워크에서 포트 5986을 여는 방화벽 규칙을 추가합니다.

  3. 로컬 워크스테이션에서 PowerShell 터미널을 엽니다.

  4. 필요한 경우 인스턴스에 연결할 때마다 입력할 필요가 없도록 변수를 초기화하여 사용자 인증 정보를 저장할 수 있습니다. 이 단계를 건너뛰면 나중에 사용자 이름과 비밀번호를 요구하는 메시지가 표시됩니다.

    PS C:\> $credentials = Get-Credential
    
  5. Enter-PSSession 명령어를 사용하여 원격 PowerShell 세션을 시작하면서 SSL을 사용하고 사용자 인증 정보 확인을 생략하는 플래그를 포함합니다.

    PS C:\> Enter-PSSession -ComputerName [IP_ADDRESS] -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials
    

    여기에서 [IP_ADDRESS]는 연결할 인스턴스의 외부 IP 주소, DNS 이름 또는 Windows 컴퓨터 이름입니다.

    인스턴스 페이지로 이동

연결 후 원격 Windows 인스턴스의 IP 주소를 포함하도록 명령어 프롬프트가 변경됩니다. 이제 터미널을 사용하여 원격 Windows Server 인스턴스에서 PowerShell 명령어를 실행할 수 있습니다.

Enter-PSSession 명령어 대신 -ScriptBlock 플래그를 설정하여 Invoke-Command 명령어를 실행하면 대화형 세션을 설정하지 않고도 원격 인스턴스에서 PowerShell 명령어를 실행할 수 있습니다.

PS C:\> Invoke-Command -ComputerName [IP_ADDRESS] -ScriptBlock { [SCRIPT] } -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials

각 항목의 의미는 다음과 같습니다.

  • [IP_ADDRESS]는 연결할 인스턴스의 IP 주소, DNS 이름, Windows 컴퓨터 이름 중 하나입니다.
  • [SCRIPT]는 원격 인스턴스에서 실행할 명령어로, 하나 이상일 수 있습니다. 예를 들어 로그 이벤트 목록을 가져오려면 Get-EventLog -log "Windows PowerShell"을 지정합니다.

서비스 계정으로 인스턴스 간 수동 연결

일부 경우에 인스턴스에 연결하고 해당 인스턴스와 연결된 서비스 계정인 것처럼 명령어를 실행하길 원할 수 있습니다. gcloud compute ssh 명령어를 사용하면 서비스 계정의 SSH 사용자 인증 정보를 사용하여 한 인스턴스에서 다른 인스턴스로 연결하고 두 번째 인스턴스에서 서비스 계정으로 명령어를 실행할 수 있습니다.

gcloud 명령줄 도구는 SSH 키 쌍을 자동으로 만들고 인스턴스의 서비스 계정과 연결합니다. 서비스 계정으로 다른 인스턴스에 연결한 후 서비스 계정의 IAM 권한을 사용하여 추가 gcloud 명령어를 실행할 수 있습니다.

이 예시에서는 다음과 같은 환경이 있다고 가정합니다.

  • 인스턴스 A:
    • 인스턴스 A에는 이와 연결된 서비스 계정이 있습니다.
    • 인스턴스 A와 연결된 서비스 계정에는 프로젝트 수준 또는 인스턴스 B 리소스에 대해 필요한 OS 로그인 역할이 구성되어 있습니다.
    • 서비스 계정의 인스턴스 A에는 https://www.googleapis.com/auth/cloud-platform 플랫폼 전체 범위가 있습니다.
  • 인스턴스 B:
    • 인스턴스 B는 인스턴스 A와 동일한 내부 네트워크 또는 인스턴스 A의 SSH 연결을 허용하는 방화벽 규칙이 있는 네트워크에서 실행됩니다.
    • OS 로그인 기능은 프로젝트 또는 특히 인스턴스 B에서 사용됩니다.
  • 개인 사용자 계정:
    • 계정에 인스턴스 A와 연결된 서비스 계정의 roles/iam.serviceAccountUser 역할이 있습니다.
    • 계정에 특히 인스턴스 A에 대한 SSH 액세스 권한이 있습니다.
    • 계정에 인스턴스 B에 대한 액세스 권한이 없습니다. 서비스 계정은 인스턴스 B에 연결하는 데 필요한 OS 로그인 역할이 있는 유일한 계정입니다.

인스턴스 A에 연결하고 해당 서비스 계정으로 명령어를 실행하세요. 이 단계를 수행하려면 서비스 계정에 roles/iam.serviceAccountUser 역할이 있어야 합니다.

  1. roles/iam.serviceAccountUser 역할이 있는 사용자로 인스턴스 A에 연결합니다. 예를 들어 gcloud 명령줄 도구를 사용하여 이 첫 번째 SSH 연결을 설정할 수 있습니다.

    my-username@localworkstation:~$ gcloud compute ssh instance-a --project my-project --zone us-east1-d
    
  2. 인스턴스 A로 SSH 연결을 설정한 후에는 roles/iam.serviceAccountUser 역할이 있는 한 서비스 계정인 것처럼 명령어를 실행할 수 있습니다. 이 예시에서는 인스턴스 A의 gcloud 명령줄 도구를 실행하여 SSH 체인 연결을 인스턴스 B에 만듭니다. gcloud 명령줄 도구는 인스턴스 B가 OS 로그인을 사용하도록 설정되어 있는지 식별하고, 서비스 계정에 인스턴스 B로 SSH 연결을 설정하는 데 필요한 IAM 역할이 있는지 식별합니다.

    my-username@instance-a:~$ gcloud compute ssh instance-b --project my-project --zone us-east1-d
    
    WARNING: Using OS Login user [sa_113491385848438711199] instead of default user [my-username]
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64
    ⋮
    
    
  3. 이제 인스턴스 B에 서비스 계정으로 연결되었으며 해당 서비스 계정으로 명령어를 실행할 수 있습니다.

    sa_113491385848438711199@instance-b:~$ uname -a
    
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 GNU/Linux
    
    

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서