RDP 문제해결

경우에 따라 RDP를 통해 Google Compute Engine Windows 인스턴스에 연결하지 못할 수 있습니다. 이 문제는 임의의 수의 네트워크 또는 구성 오류 때문일 수 있습니다. 이 페이지에서는 일반적인 RDP 문제를 해결하는 다양한 팁과 방법을 설명합니다.

인스턴스가 가동 상태이고 준비가 완료되었는지 확인

Windows 인스턴스의 상태는 시리얼 콘솔을 통해 사용할 수 있습니다. 읽기 전용 또는 대화형 시리얼 콘솔에 연결하여 인스턴스의 준비가 완료되었는지 확인하세요.

  • 시리얼 콘솔 1(읽기 전용)

    1. Cloud Console의 VM 인스턴스 페이지에서 Windows 인스턴스를 엽니다.
    2. 시리얼 콘솔에 연결 옆에 있는 드롭다운 화살표를 클릭하고 시리얼 포트 1을 선택하거나 아래의 gcloud SDK 명령을 실행합니다.

      gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 1
      
    3. 인스턴스가 시작되었는지와 시작 스크립트 실행이 시도되었는지 확인합니다.

      Booting from Hard Disk 0...
      GCEWindowsAgent: GCE Agent Started (version x.x.x@x)
      GCEMetadataScripts: No startup scripts to run.
      
  • 직렬 콘솔 2(대화형)

    1. VM 인스턴스 페이지 또는 아래의 gcloud SDK 명령어를 통해 직렬 콘솔에서 대화형 액세스를 사용 설정합니다.

      gcloud compute instances add-metadata [INSTANCE_NAME]^
      --metadata=serial-port-enable=1
      
    2. Cloud Console의 VM 인스턴스 페이지에서 Windows 인스턴스를 엽니다.

    3. 직렬 콘솔에 연결 옆에 있는 드롭다운 화살표를 클릭하고 직렬 포트 2를 선택합니다. 또는 다음과 같은 gcloud SDK 명령어를 실행할 수 있습니다.

      gcloud compute connect-to-serial-port [INSTANCE_NAME] --port 2
      
    4. cmd 프로세스를 사용할 수 있는지 확인합니다.

      SAC cmd 명령 사용 가능 스크린샷

VPC 방화벽 규칙 확인

Google Compute Engine은 RDP 트래픽을 허용하는 방화벽 규칙으로 새 프로젝트를 자동으로 프로비저닝합니다. 기존 프로젝트가 있거나 구성을 수정한 경우 RDP를 허용하는 기본 방화벽 규칙이 없을 수도 있습니다. 규칙에서 RDP 트래픽이 영향을 받는 인스턴스가 가동 중인 네트워크에 연결할 수 있도록 허용하는지 확인합니다.

프로젝트에 default-allow-rdp 방화벽 규칙이 있는지 확인하려면 방화벽 규칙 페이지를 확인하거나 다음 gcloud SDK 명령어를 실행합니다.

gcloud compute firewall-rules list

규칙이 없는 경우 새 규칙을 만들려면 다음 명령어를 실행합니다.

gcloud compute firewall-rules create allow-rdp --allow tcp:[PORT_NUMBER]

Windows 인스턴스 비밀번호 확인

도메인이나 커스텀 이미지에 아직 없으면 각 Google Compute Engine Windows 인스턴스에는 로컬 비밀번호가 설정되어 있어야 합니다. gcloud 명령줄 도구 또는 GCP 콘솔을 통해 Windows SAC에 연결하여 올바른 비밀번호가 설정되었는지 확인합니다.

연결하는 데 문제가 발생하면 Windows 인스턴스에서 비밀번호를 만들거나 재설정합니다.

외부 IP 주소 확인

인스턴스에 대한 올바른 외부 IP 주소에 연결하고 있는지 확인합니다. VM 인스턴스 페이지에서 또는 다음 gcloud SDK 명령어를 사용하여 인스턴스에 대한 IP를 확인합니다.

gcloud compute instances list

Windows 원격 데스크톱 서비스(RDS) 사용

Windows 원격 데스크톱 서비스(이전 터미널 서비스)가 인스턴스에 설치되어 있다면 클라이언트 액세스 라이선스(CAL)가 적용됩니다. CAL이 적용될 경우 다음과 같은 조건에서는 RDP 연결이 중단됩니다.

  • 사용 가능한 라이선스를 모두 사용한 경우
  • RDS 평가판 사용 기간이 만료된 경우

RDP 연결이 중단되더라도 관리 목적인 경우에는 관리 스위치를 사용해 인스턴스에 연결할 수 있습니다. 이때 인스턴스 연결은 기본 원격 데스크톱 연결 클라이언트를 사용해 Windows 시스템에서 가능합니다.

%systemroot%/system32/mstsc.exe /admin

RDP 연결 문제를 해결하려면 인스턴스 라이선스를 새로 구매해야 합니다. CAL에 대한 자세한 내용은 Microsoft 문서서를 참조하세요. 그 밖에 원격 데스크톱 서비스가 필요하지 않다면 서비스를 제거한 후 일반 RDP 연결을 사용할 수 있습니다.

OS 구성 확인

인스턴스에 대한 환경 및 구성이 올바른 경우 인스턴스의 운영 체제가 잘못 구성되어 있을 수 있습니다. 대화형 시리얼 콘솔을 사용하여 인스턴스에 연결하고 문제를 해결할 수 있습니다.

사용 가능한 명령줄 메소드 중 하나를 통해 인스턴스에 연결하고 다음 명령을 실행하여 인스턴스가 연결을 수락하는지 확인합니다.

  1. '원격 데스크톱 서비스'가 실행되고 있는지 확인합니다.

    • 명령어: net start | find "Remote Desktop Services"
    • 통과: Remote Desktop Service
    • 실패: (원격 데스크톱 서비스가 출력에 없음)
    • 해결 방법: net start "Remote Desktop Services"
  2. 원격 연결이 사용되도록 설정되어 있는지 확인합니다.

    • 명령어: reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
    • 통과: fDenyTSConnections REG_DWORD 0x0
    • 실패: fDenyTSConnections REG_DWORD 0x1
    • 해결 방법: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
  3. Windows 방화벽에 원격 데스크톱 연결이 사용 설정되어 있는지 확인합니다.

    • 명령어: netsh advfirewall firewall show rule name="Remote Desktop - User Mode (TCP-In)"
    • 통과: Enabled:Yes, Direction: In, Profiles: Public, Grouping: Remote Desktop, LocalIP: Any, RemoteIP: Any, Protocol:TCP, LocalPort: 3389, RemotePort: Any, Edge traversal: No, Action: Allow

    • 실패: (예기치 않은 결과, 예: enabled = No)

    • 해결 방법: netsh firewall set service remotedesktop enable

  4. 원격 인스턴스에서 RDP 연결에 대해 구성된 포트 번호를 확인합니다.

    • 명령어: reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
    • 통과: PortNumber REG_DWORD [PORT NUMBER]
    • 실패: (예기치 않은 포트 번호)
    • 해결 방법: reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /f /v PortNumber /t REG_DWORD /d [PORT NUMBER]

  5. 연결된 사용자 계정에 원격 연결에 대한 권한이 있는지 확인합니다.

    • 명령어: net localgroup "Remote Desktop Users"
    • 통과: (결과 목록의 대상 로컬/도메인 사용자 이름)
    • 실패: (대상 로컬/도메인 사용자 이름 누락)
    • 해결 방법: net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]

  6. MTU 크기가 1460보다 크지 않은지 확인합니다.

    • 명령어: netsh interface ipv4 show subinterfaces
    • 통과: MTU 1460, MediaSenseState 1, Bytes In 915643107, Bytes Out 681487030, Interface: Ethernet

    • 실패: (MTU가 1460보다 크게 설정됨)

    • 해결 방법: netsh interface ipv4 set subinterface Ethernet mtu=1460

  7. 바이러스 백신/엔드포인트 보호 클라이언트 설정에서 구성된 포트 번호 및 서비스를 허용하는지 확인합니다.

새 인스턴스에서 디스크 사용

다른 문제 해결 단계를 통해 연결 문제가 해결되지 않으면 기존 인스턴스를 삭제하고 영구 디스크를 보존할 수 있습니다. 디스크를 새 인스턴스에 다시 마운트하고 다른 문제 해결 방법을 시도하거나 디스크에서 기존 데이터를 복구합니다.

gcloud compute instances delete [INSTANCE_NAME] --keep-disks=boot
gcloud compute instances create [NEW_INSTANCE_NAME] --disk name=[DISK_NAME]^
boot=yes auto-delete=no
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

Compute Engine 문서