경우에 따라 RDP를 통해 Compute Engine Windows 가상 머신(VM) 인스턴스에 연결하지 못할 수 있습니다. 이 문제는 구성 오류 또는 네트워크 오류가 발생했거나 부팅 프로세스가 완료되지 않았기 때문일 수 있습니다.
이 문서에서는 일반적인 RDP 문제를 해결하기 위한 다양한 팁과 방법을 설명합니다.
VM이 가동 상태이고 준비가 완료되었는지 확인
VM 부팅이 완료되기까지 몇 분 정도 걸릴 수 있으며, 다음 방법 중 하나를 사용하여 상태를 확인합니다.
직렬 포트 1
직렬 포트 1은 시스템 및 애플리케이션 활동을 로깅하는 데 사용됩니다. 출력을 확인하여 VM 부팅이 완료되었고 서비스가 올바르게 시작되었는지 확인합니다.
Google Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
로그를 보려는 VM의 이름을 클릭합니다. VM 인스턴스 세부정보 페이지가 열립니다.
로그에서 직렬 포트 1을 선택합니다.
직렬 포트 1 출력을 검토하고 다음과 비슷한 출력을 찾습니다.
BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi UEFI: Attempting to start image. Description: Windows Boot Manager FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi OptionNumber: 3. 2021/04/13 10:50:22 GCEGuestAgent: GCE Agent Started (version 20210128.00) 2021-04-13T10:50:23.4621Z OSConfigAgent Info: OSConfig Agent (version 20210217.00.0+win@1) started. 2021/04/13 10:50:42 GCEMetadataScripts: Starting startup scripts (version 20200129.00). 2021/04/13 10:50:42 GCEMetadataScripts: No startup scripts to run.
GCEGuestAgent
또는 GCEMetadataScripts
가 포함된 출력은 Windows가 성공적으로 시작되었음을 확인합니다. RDP를 사용하여 VM에 다시 연결합니다.
직렬 포트 2
직렬 포트 2는 VM에 대한 대화형 연결을 제공하며 특수 관리 콘솔(SAC)의 출력도 표시합니다. 직렬 콘솔 2를 사용하여 시스템 서비스가 성공적으로 시작되었는지 확인할 수 있습니다.
Google Cloud Console에서 VM 인스턴스 페이지로 이동합니다.
로그를 보려는 VM의 이름을 클릭합니다. VM 인스턴스 세부정보 페이지가 열립니다.
로그에서 더보기를 확장한 후 직렬 포트 2(Console)를 클릭합니다.
직렬 포트 2 출력을 검토하고 다음과 비슷한 출력을 찾습니다.
BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi UEFI: Attempting to start image. Description: Windows Boot Manager FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi OptionNumber: 3. <machine-info> <name>WINDOWS</name> <guid>b7ab5000-4000-e000-e000-bc5a738da000</guid> <processor-architecture>AMD64</processor-architecture> <os-version>10.0</os-version> <os-build-number>17763</os-build-number> <os-product>Windows Server 2019 Datacenter</os-product> <os-service-pack>None</os-service-pack> </machine-info> Computer is booting, SAC started and initialized. Use the "ch -?" command for information about using channels. EVENT: The CMD command is now available. SAC>
SAC started and initialized
또는 CMD command is now
available
이 포함된 출력은 Windows가 성공적으로 시작되었음을 확인합니다. RDP를 사용하여 VM에 다시 연결합니다.
VM 스크린샷
VM 스크린샷은 VM 상태를 컴퓨터 모니터와 비슷하게 시각적으로 표시합니다.
VM의 스크린샷을 캡처하려면 먼저 VM의 가상 디스플레이를 사용 설정해야 합니다. 가상 디스플레이를 아직 사용 설정하지 않은 경우 가상 디스플레이 사용 설정을 참조하세요.
스크린샷을 캡처합니다. 자세한 내용은 VM에서 스크린샷 캡처를 참조하세요.
스크린샷을 검토하여 인스턴스가 준비되었는지 확인합니다.
다음과 같이 스크린샷을 비교하여 현재 상태를 확인합니다.
- Windows 로그인 화면에서 OS가 성공적으로 시작되었는지 확인합니다. 이제 RDP를 통해 연결을 시도할 수 있습니다.
- Windows 업데이트 진행 화면은 VM이 아직 준비되지 않았음을 나타내며 업데이트를 완료하는 데 시간이 더 걸릴 수 있습니다.
- 서비스 로드 화면은 VM이 아직 준비되지 않았음을 나타내며 VM이 필요한 서비스를 시작하는 데 더 많은 시간이 걸릴 수 있습니다.
- UEFI 로딩 화면은 누락된 부팅 파일/레코드 또는 손상된 부팅 섹터/관리자를 나타낼 수 있습니다.
- Windows 블루 스크린 오류는 일시적이거나 추가 문제 해결이 필요할 수 있습니다.
몇 분 후에도 Windows가 성공적으로 시작되지 않으면 Windows 문제 해결 가이드를 검토하세요.
워크스테이션과 VM 인스턴스 간 연결 확인
Windows VM을 연결할 때 문제가 발생한 경우에는 연결을 위해 사용 중인 워크스테이션 또는 연결하려는 대상 VM에 문제가 있는지 확인하는 것이 좋습니다. Linux, macOS, Windows 워크스테이션에서 다음 명령어를 실행하여 워크스테이션과 VM 사이의 연결을 확인합니다.
curl -v telnet://DESTINATION_IP_ADDRESS:PORT
다음을 바꿉니다.
DESTINATION_IP_ADDRESS
: Windows VM의 IP 주소입니다.PORT
: Windows VM에서 RDP를 통해 연결하도록 구성된 포트입니다.
또한 연결 테스트를 사용해서 VM 인스턴스와 다른 Google Cloud 제품 및 서비스 사이의 연결을 추가로 확인할 수 있습니다. 또한 VM 인스턴스에서 RDP 연결 문제를 격리시키기 위해 동일한 서브네트워크에서 배스천 호스트를 설정하는 것이 유용할 수 있습니다.
Windows 인스턴스 비밀번호 확인
도메인 또는 커스텀 이미지에 비밀번호가 아직 없으면 각 Compute Engine Windows 인스턴스마다 로컬 비밀번호가 설정되어 있어야 합니다. Google Cloud CLI
명령줄 도구나 Google Cloud 콘솔을 통해 VM에 연결하여 올바른 비밀번호가 설정되었는지 확인하세요. 자세한 내용은 SAC를 사용하여 Windows VM에 연결을 참조하세요.
연결하는 데 문제가 발생하면 비밀번호를 만들거나 재설정해 보세요. 자세한 내용은 Windows VM용 비밀번호 만들기를 참조하세요.
Windows Server Core 사용 여부 확인
RDP를 사용하여 연결할 때 빈 배경에 명령어 프롬프트 창이 표시되면 Windows Server Core를 사용하고 있음을 나타내는 것일 수 있습니다. 아래 명령어를 실행했는지 확인합니다.
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType
출력의 Server Core
는 Windows Core 버전을 사용 중임을 확인합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion InstallationType REG_SZ Server Core
워크로드에 그래픽 사용자 인터페이스가 필요한 경우 Server Core 대신 Desktop Experience이 포함된 Windows 인스턴스 만들기를 살펴보세요. 또는 Windows Core 서버 관리에 대한 Microsoft 문서를 읽어보세요.
VPC 방화벽 규칙 확인
Compute Engine은 RDP 트래픽을 허용하는 방화벽 규칙으로 새 프로젝트를 자동으로 프로비저닝합니다. 기존 프로젝트가 있거나 구성을 수정한 경우에는 RDP를 허용하는 기본 방화벽 규칙이 없을 수도 있습니다. 규칙에서 RDP 트래픽이 영향을 받는 인스턴스가 가동 중인 네트워크에 연결할 수 있도록 허용하는지 확인합니다.
프로젝트에 default-allow-rdp 방화벽 규칙이 있는지 확인하려면 방화벽 규칙 페이지를 확인하거나 다음 gcloud CLI 명령어를 실행합니다.
gcloud compute firewall-rules list
규칙이 없는 경우 새 규칙을 만들려면 다음 명령어를 실행합니다.
gcloud compute firewall-rules create allow-rdp --allow tcp:3389
외부 IP 주소 확인
인스턴스의 올바른 외부 IP 주소에 연결하고 있는지 확인하세요. VM 인스턴스 페이지에서 또는 다음 gcloud CLI 명령어를 사용하여 인스턴스에 대한 IP를 확인합니다.
gcloud compute instances list
Windows 원격 데스크톱 서비스(RDS) 사용
Windows 원격 데스크톱 서비스(이전 터미널 서비스)가 인스턴스에 설치되어 있다면 클라이언트 액세스 라이선스(CAL) 조건이 적용됩니다. CAL이 적용될 경우 다음과 같은 상황에서는 RDP 연결이 실패합니다.
- 사용 가능한 라이선스를 모두 사용한 경우
- 라이선스가 설치되었지만 올바르게 구성되거나 활성화되지 않은 경우
- 180일의 RDS 체험 기간이 만료된 경우
유효한 라이선스가 부족한 경우 다음과 같은 메시지를 비롯한 증상이 발생할 수 있습니다.
- 이 원격 세션은 라이선스 제공에 사용할 수 있는 원격 데스크톱 라이선스 서버가 없어서 연결이 끊겼습니다.
- 이 원격 세션은 터미널 서버의 라이선스 관련 오류로 인해 연결이 끊겼습니다.
- 이 원격 세션은 이 컴퓨터에 사용할 수 있는 원격 데스크톱 클라이언트 액세스 라이선스가 없어서 연결이 끊겼습니다.
RDP 연결에 실패하더라도 관리 목적인 경우에는 관리 스위치를 사용해 인스턴스에 연결할 수 있습니다. 이때 인스턴스 연결은 기본 원격 데스크톱 연결 클라이언트를 사용해 Windows 시스템에서 가능합니다.
%SystemRoot%\System32\mstsc.exe /admin
관리용 동시 실행 원격 데스크톱 세션 2개가 주문형 Windows Server 및 SQL Server 이미지에 포함되어 있습니다.
RDP 연결 문제를 해결하려면 인스턴스에 대해 RDS 라이선스를 새로 구매해야 합니다. CAL에 대한 자세한 내용은 Microsoft 문서를 참조하세요. 그 밖에 원격 데스크톱 서비스가 필요하지 않다면 서비스를 제거한 후 일반 RDP 연결을 사용할 수 있습니다.
OS 수준 구성 및 리소스 검증
인스턴스에 대한 게스트 환경 및 구성이 올바른 경우 인스턴스의 운영 체제가 잘못 구성되어 있을 수 있습니다. 또한 적절한 리소스가 없으면 RDP 연결이 설정되지 않을 수 있습니다. OS 수준 구성을 검증하려면 Windows SAC에 연결합니다.
VM에 적절한 리소스가 포함되었는지 확인
CPU, 메모리, 디스크 사용량, 사용 가능한 디스크 공간이 한도에 도달하지 않았는지 확인합니다. 이 데이터는 Google Cloud 콘솔에서 관측 가능성 측정항목을 확인하여 조사할 수 있습니다. 일부 측정항목은 운영 에이전트가 설치된 VM에 대해서만 제공됩니다. 또는 운영 에이전트가 설치되지 않았으면 SAC에 연결되었을 때 다음 명령어를 사용합니다.
CPU 사용량, 메모리 사용량, 디스크 사용량, 디스크 용량
- CPU 사용량:
typeperf "\Processor(_Total)\% Processor Time" -sc 5
- 메모리 사용량:
typeperf "\Memory\% Committed Bytes In Use" -sc 5
- 디스크 사용량:
typeperf "\LogicalDisk(*)\% Idle Time" -sc 5
- 디스크 용량:
fsutil volume diskfree C:
다음은 RDP 연결에 권장되는 리소스 사용량이지만 추정값일 뿐이며 인스턴스별로 달라질 수 있습니다.
- CPU: 80% 미만
- 메모리: 80% 미만
- 디스크 공간: 20% 초과
- 유휴 디스크: 50% 초과
제안된 추정값이 해당 한도에 도달하는 경우 VM 인스턴스에 대해 해당 리소스를 수정할 수 있습니다. VM 속성을 수정하려면 VM 인스턴스의 머신 유형 수정 및 영구 디스크의 크기 증가 방법을 참조하세요.
OS 구성 확인
SAC를 통해 인스턴스에 연결하고 다음 명령어를 실행하여 인스턴스에 연결이 허용되는지 확인합니다.
이더넷 어댑터가 사용 설정되었는지 확인합니다.
- 명령어:
netsh interface show interface
- 통과: 이더넷으로 라벨이 지정된 인스턴스 이름에서 관리자 상태가 사용 설정됨으로 설정됩니다.
- 실패: 이더넷으로 라벨이 지정된 인스턴스 이름에서 관리자 상태가 사용 중지됨으로 설정됩니다.
- 해결책: 이더넷 어댑터를 사용 설정합니다.
netsh interface set interface Ethernet admin=enabled
- 명령어:
인스턴스에 유효한 IP 구성이 포함되었는지 확인합니다.
- 명령어:
ipconfig /all
- 통과: 이더넷 어댑터 이더넷에 인스턴스가 할당된 서브넷의 IPv4 주소가 표시됩니다.
- 실패: IPv4 주소가 표시되지 않거나 Google Cloud 콘솔에 표시된 것과 일치하지 않는 주소가 표시됩니다.
- 해결책: 다음 단계로 진행합니다.
- 명령어:
인스턴스에 DHCP가 사용 설정되었는지 확인합니다.
- 명령어:
netsh interface ipv4 show addresses
- 통과: 이더넷 아래의 출력에 DHCP 사용 설정됨: 예가 포함됩니다.
- 실패: 이더넷 아래의 출력에 DHCP 사용 설정됨: 아니요가 포함됩니다.
- 해결책: 이더넷 어댑터에서 DHCP를 사용 설정합니다.
netsh interface ipv4 set address Ethernet dhcp
- 명령어:
'원격 데스크톱 서비스'가 실행되고 있는지 확인합니다.
- 명령어:
net start | find "Remote Desktop Services"
- 통과: 원격 데스크톱 서비스
- 실패: (원격 데스크톱 서비스가 출력에 없음)
- 해결책: 원격 데스크톱 서비스를 시작합니다.
net start "Remote Desktop Services"
- 명령어:
원격 연결이 사용되도록 설정되어 있는지 확인합니다.
- 명령어:
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
- 명령어:
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)
해결책: Windows 방화벽 내에서 기존 '원격 데스크톱' 방화벽 규칙을 사용 설정합니다.
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
- 명령어:
원격 인스턴스에서 RDP 연결에 대해 구성된 포트 번호를 확인합니다.
- 명령어:
reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
- 통과: PortNumber REG_DWORD [PORT NUMBER]
- 실패: (예기치 않은 포트 번호)
해결책: RDP에 필요한 레지스트리에서 포트 번호를 구성합니다.
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /f /v PortNumber /t REG_DWORD /d [PORT NUMBER]
- 명령어:
다른 애플리케이션이 동일한 포트를 사용하려고 시도하는 중이 아닌지 확인합니다.
- 명령어:
netstat -ano | find "3389"
- 통과: 할당된 RDP 포트에 대해 수신 대기 중인 상태의 항목이 있는지 찾습니다. 일치하는 서비스는 다음 명령어를 통해 프로세스 식별자(PID)를 사용하여 찾을 수 있습니다.
tasklist /svc | find "
여기서 PID는 이전 명령어의 식별자입니다. 출력에 Termservice만 반환됩니다." - 실패: Termservice를 제외한 모든 항목에 할당된 포트가 사용됩니다.
- 해결책: 다른 포트 번호를 사용하도록 애플리케이션/서비스를 구성합니다.
- 명령어:
연결된 사용자 계정에 원격 연결에 대한 권한이 있는지 확인합니다.
- 명령어:
net localgroup "Remote Desktop Users"
- 통과: (결과 목록의 대상 로컬/도메인 사용자 이름)
- 실패: (대상 로컬/도메인 사용자 이름 누락)
해결책: 도메인 사용자에게 '원격 데스크톱 사용자' 규칙을 추가합니다.
net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]
도메인은 다른 도메인에 조인된 시스템의 사용자 계정에만 필요합니다. 로컬 계정의 경우 사용자 이름만 지정하세요.
- 명령어:
클라이언트/서버 보안 협상이 해당 기본값으로 설정되었는지 확인합니다.
- 명령어:
reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer
- 통과: SecurityLayer REG_DWORD 0x1
- 실패: SecurityLayer REG_DWORD 0x0 (or 0x2)
- 해결책: 레지스트리에서 보안 협상 값을 설정합니다.
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 1 /f
- 명령어:
인스턴스가 Active Directory 도메인에 연결되었지만 연결을 설정할 수 없는 경우에는 인스턴스에 액세스하려고 시도할 때 다음 오류가 표시될 수 있습니다.
The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA.
사용자 네트워크 수준 인증(NLA)가 해당 기본값으로 설정되었는지 확인합니다.
- 명령어:
reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication
- 통과: UserAuthentication REG_DWORD 0x0
- 실패: UserAuthentication REG_DWORD 0x1
- 해결책: 레지스트리에서 네트워크 수준 인증 값을 설정합니다.
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
- 명령어:
MTU 크기가 네트워크의 MTU보다 크지 않은지 확인합니다.
- 명령어:
netsh interface ipv4 show subinterfaces
- 통과: MTU 뒤의 숫자가 VPC 네트워크의 MTU와 일치하는 경우
- 실패: MTU 뒤의 숫자가 VPC 네트워크의 MTU보다 큰 경우
해결책: 인터페이스의 MTU를 VPC 네트워크의 MTU로 설정합니다.
netsh interface ipv4 set subinterface Ethernet mtu=MTU_OF_VPC_NETWORK
MTU 크기 비호환성에 대한 자세한 내용은 패킷 분할 문서를 참조하세요.
- 명령어:
RDP를 사용해서 VM에 연결하려고 시도할 때 VM에 키보드 레이아웃 화면이 표시되면 Windows SAC에 연결하여 언어를 선택해야 합니다. 언어를 선택하려면 다음 단계를 완료합니다.
- SAC에 연결합니다.
powershell
을 입력하여 Powershell을 엽니다.올바른 언어 문자열을 가져옵니다.
Get-WinUserLanguageList
원하는 레이아웃을 설정합니다.
LANGUAGE_TAG
를 원하는 언어 레이아웃(예:en-US
)으로 바꿉니다.Set-WinUserLanguageList -LanguageList LANGUAGE_TAG -force
인스턴스를 재부팅합니다.
shutdown -r -t 0
you need the right to sign in through Remote Desktop Services
또는you must be granted the Allow log on through Terminal Services right
이 표시된 로그온 화면에서 RDP 오류가 발생하면 원격 데스크톱 사용자 또는 관리자 그룹이 원격 데스크톱 서비스를 통해 로그온 허용 또는 SeRemoteInteractiveLogonRight에 있는 로컬 컴퓨터 정책 설정에서 삭제됩니다.인증서 인증을 차단하는 권한이 누락되지 않았는지 확인합니다.
- 명령어:
icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"
- 통과: Everyone:(R,W) BUILTIN\Administrators:(F)와 비슷한 출력이 표시됩니다.
- 실패: 출력이 Everyone:(R,W) BUILTIN\Administrators:(F)와 일치하지 않습니다.
- 명령어:
바이러스 백신/엔드포인트 보호 클라이언트 설정에서 구성된 포트 번호 및 서비스를 허용하는지 확인합니다.
세션 제한 시간 한도 확인
RDP 연결을 설정할 수 있지만 일정 시간 후 타이머 만료를 나타내는 메시지와 함께 연결이 해제되면 다음 값이 정상인지 확인합니다.
레지스트리 경로: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
레지스트리 키:
MaxDisconnectionTime
MaxIdleTime
MaxConnectionTime
MaxDisconnectionTime
RemoteAppLogoffTimeLimit
이 값은 밀리초 단위로 설정됩니다. 이러한 키가 레지스트리에 없으면 VM 인스턴스에 세션 제한이 없습니다. 이러한 키가 레지스트리에 있지만 해당 값이 0
으로 설정된 경우에는 세션이 만료되지 않습니다.
Windows 시작 문제 해결
위의 문제 해결 단계로 RDP 연결 문제가 해결되지 않으면 Windows 인스턴스가 부팅되지 않거나 올바르게 실행되지 않을 수 있습니다. 이 경우 Windows 문제 해결 가이드를 검토하세요.
다음 단계
Windows 운영체제 문제 해결에 대해 자세히 알아보기
VM에서 진단 정보를 수집하는 방법 알아보기
직렬 콘솔을 사용한 문제 해결 알아보기
VM에서 스크린샷을 캡처하는 방법 알아보기