원격 데스크톱을 통해 Azure VM에 연결하려고 할 때 내부 오류 발생
적용 대상: ✔️ Windows VM
이 문서에서는 Microsoft Azure의 VM(가상 머신)에 연결하려고 할 때 발생할 수 있는 오류를 설명합니다.
참고 항목
이 문서가 도움이 되었나요? 귀하의 입력은 우리에게 중요합니다. 이 페이지의 피드백 단추를 사용하여 이 문서가 얼마나 잘 작동했는지 또는 어떻게 개선할 수 있는지 알려주세요.
증상
RDP(원격 데스크톱 프로토콜)를 사용하여 Azure VM에 연결할 수 없습니다. 원격 구성 섹션에서 연결이 중단되거나 다음 오류 메시지가 표시됩니다.
- RDP 내부 오류
- 내부 오류가 발생했습니다.
- 이 컴퓨터는 원격 컴퓨터에 연결할 수 없습니다. 다시 연결해 보세요. 문제가 계속되면 원격 컴퓨터의 소유자 또는 네트워크 관리자에게 문의하세요.
원인
이 문제는 다음과 같은 이유로 발생할 수 있습니다.
- 가상 머신이 공격을 받았을 수 있습니다.
- 로컬 RSA 암호화 키에 액세스할 수 없습니다.
- TLS 프로토콜이 사용되지 않도록 설정되어 있습니다.
- 인증서가 손상되었거나 만료되었습니다.
솔루션
이 문제를 해결하려면 다음 섹션의 단계를 완료합니다. 시작하기 전에 영향을 받는 VM의 OS 디스크 스냅샷을 백업으로 만듭니다. 자세한 내용은 디스크 스냅샷을 참조 하세요.
RDP 보안 확인
먼저 RDP 포트 3389에 대한 네트워크 보안 그룹이 안전하지 않은지(열기) 확인합니다. 보안되지 않고 *를 인바운드의 원본 IP 주소로 표시하는 경우 RDP 포트를 특정 사용자의 IP 주소로 제한한 다음 RDP 액세스를 테스트합니다. 실패하면 다음 섹션의 단계를 완료합니다.
직렬 컨트롤 사용
VM의 OS 디스크를 복구 VM에 연결하여 직렬 콘솔을 사용하거나 오프라인 으로 VM을 복구합니다.
시작하려면 직렬 콘솔에 연결하고 PowerShell 인스턴스를 엽니다. VM에서 직렬 콘솔을 사용하지 않도록 설정한 경우 오프라인으로 VM 복구 섹션으로 이동합니다.
단계: 1 RDP 포트 확인
PowerShell 인스턴스에서 NETSTAT를 사용하여 포트 3389가 다른 애플리케이션에서 사용되는지 확인합니다.
Netstat -anob |more
Termservice.exe 3389 포트를 사용하는 경우 2단계로 이동합니다. Termservice.exe 이외의 다른 서비스 또는 애플리케이션이 3389 포트를 사용하는 경우 다음 단계를 수행합니다.
3389 서비스를 사용하는 애플리케이션에 대한 서비스를 중지합니다.
Stop-Service -Name <ServiceName> -Force
터미널 서비스를 시작합니다.
Start-Service -Name Termservice
애플리케이션을 중지할 수 없거나 이 메서드가 적용되지 않는 경우 RDP의 포트를 변경합니다.
포트를 변경합니다.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -name PortNumber -value <Hexportnumber> Stop-Service -Name Termservice -Force Start-Service -Name Termservice
새 포트에 대한 방화벽을 설정합니다.
Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
Azure Portal RDP 포트에서 새 포트 에 대한 네트워크 보안 그룹을 업데이트합니다.
2단계: RDP 자체 서명된 인증서에 대해 올바른 권한 설정
PowerShell 인스턴스에서 다음 명령을 하나씩 실행하여 RDP 자체 서명된 인증서를 갱신합니다.
Import-Module PKI Set-Location Cert:\LocalMachine $RdpCertThumbprint = 'Cert:\LocalMachine\Remote Desktop\'+((Get-ChildItem -Path 'Cert:\LocalMachine\Remote Desktop\').thumbprint) Remove-Item -Path $RdpCertThumbprint Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
이 방법으로 인증서를 갱신할 수 없으면 RDP 자체 서명된 인증서를 원격으로 갱신합니다.
작동하는 VM이 문제가 있는 VM에 연결되어 있으면 실행 상자에서 mmc를 입력하여 Microsoft Management Console을 엽니다.
파일 메뉴에서 스냅인 추가/제거를 선택하고 인증서를 선택한 다음 추가를 선택합니다.
컴퓨터 계정을 선택하고 다른 컴퓨터를 선택한 다음 문제 VM의 IP 주소를 추가합니다.
원격 데스크톱\인증서 폴더로 이동하여 인증서를 마우스 오른쪽 단추로 클릭한 다음 삭제를 선택합니다.
직렬 콘솔의 PowerShell 인스턴스에서 원격 데스크톱 구성 서비스를 다시 시작합니다.
Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
MachineKeys 폴더에 대한 권한을 다시 설정합니다.
remove-module psreadline md c:\temp icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt Restart-Service TermService -Force
VM을 다시 시작한 후 VM에 대한 원격 데스크톱 연결을 시작합니다. 오류가 계속 발생하면 다음 단계로 이동합니다.
3단계: 지원되는 모든 TLS 버전 사용
RDP 클라이언트는 TLS 1.0을 기본 프로토콜로 사용합니다. 그러나 새 표준이 된 TLS 1.1로 변경할 수 있습니다. VM에서 TLS 1.1을 사용하지 않도록 설정하면 연결이 실패합니다.
CMD 인스턴스에서 TLS 프로토콜을 사용하도록 설정합니다.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
AD 정책이 변경 내용을 덮어쓰지 않도록 하려면 그룹 정책 업데이트를 일시적으로 중지합니다.
REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
변경 내용이 적용되도록 VM을 다시 시작합니다. 문제가 해결되면 다음 명령을 실행하여 그룹 정책을 다시 사용하도록 설정합니다.
sc config gpsvc start= auto sc start gpsvc gpupdate /force
변경 내용이 되돌려지면 회사 도메인에 Active Directory 정책이 있음을 의미합니다. 이 문제가 다시 발생하지 않도록 해당 정책을 변경해야 합니다.
오프라인으로 VM 복구
OS 디스크를 복구 VM에 연결
- OS 디스크를 복구 VM에 연결합니다.
- OS 디스크가 복구 VM에 연결되면 디스크 관리 콘솔에서 디스크에 온라인 플래그가 지정되어 있는지 확인합니다. 연결된 OS 디스크에 할당된 드라이브 문자를 확인합니다.
- 복구 VM에 대한 원격 데스크톱 연결을 시작합니다.
덤프 로그 및 직렬 콘솔 사용
덤프 로그 및 직렬 콘솔을 사용하도록 설정하려면 다음 스크립트를 실행합니다.
관리자 권한 명령 프롬프트 세션을 엽니다(관리자 권한으로 실행).
다음 스크립트를 실행합니다.
이 스크립트에서는 연결된 OS 디스크에 할당된 드라이브 문자가 F라고 가정합니다. 이 드라이브 문자를 VM에 적절한 값으로 바꿉다.
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REM Enable Serial Console bcdedit /store F:\boot\bcd /set {bootmgr} displaybootmenu yes bcdedit /store F:\boot\bcd /set {bootmgr} timeout 5 bcdedit /store F:\boot\bcd /set {bootmgr} bootems yes bcdedit /store F:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON bcdedit /store F:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200 REM Suggested configuration to enable OS Dump REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
MachineKeys 폴더에 대한 권한 다시 설정
관리자 권한 명령 프롬프트 세션을 엽니다(관리자 권한으로 실행).
다음 스크립트를 실행합니다. 이 스크립트에서는 연결된 OS 디스크에 할당된 드라이브 문자가 F라고 가정합니다. 이 드라이브 문자를 VM에 적절한 값으로 바꿉다.
Md F:\temp icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt
지원되는 모든 TLS 버전 사용
관리자 권한 명령 프롬프트 세션을 열고(관리자 권한으로 실행) 다음 명령을 실행합니다. 다음 스크립트에서는 드라이버 문자가 연결된 OS 디스크에 할당된 것으로 가정합니다. 이 드라이브 문자를 VM에 적절한 값으로 바꿉니다.
사용하도록 설정된 TLS를 확인합니다.
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
키가 없거나 해당 값이 0이면 다음 스크립트를 실행하여 프로토콜을 사용하도록 설정합니다.
REM Enable TLS 1.0, TLS 1.1 and TLS 1.2 REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
NLA 사용:
REM Enable NLA REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
OS 디스크를 분리하고 VM을 다시 만들고 문제가 해결되었는지 확인합니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.