다음을 통해 공유


원격 데스크톱을 통해 Azure VM에 연결하려고 할 때 내부 오류가 발생합니다.

이 문서에서는 Microsoft Azure에서 VM(가상 머신)에 연결하려고 할 때 발생할 수 있는 오류에 대해 설명합니다.

참고

이 문서가 도움이 되었나요? 귀하의 입력은 우리에게 중요합니다. 이 페이지의 피드백 단추를 사용하여 이 문서가 얼마나 잘 작동했는지 또는 어떻게 개선할 수 있는지 알려주세요.

증상

RDP(원격 데스크톱 프로토콜)를 사용하여 Azure VM에 연결할 수 없습니다. 연결이 원격 구성 섹션에서 중단되거나 다음 오류 메시지가 표시됩니다.

  • RDP 내부 오류
  • 내부 오류가 발생했습니다.
  • 이 컴퓨터는 원격 컴퓨터에 연결할 수 없습니다. 나중에 다시 연결해 보세요. 문제가 계속되면 원격 컴퓨터의 소유자 또는 네트워크 관리자에게 문의하세요.

원인

이 문제는 다음과 같은 이유로 발생할 수 있습니다.

  • 가상 머신이 공격을 받았을 수 있습니다.
  • 로컬 RSA 암호화 키에 액세스할 수 없습니다.
  • TLS 프로토콜을 사용할 수 없습니다.
  • 인증서가 손상되었거나 만료되었습니다.

해결 방법

이 문제를 해결하려면 다음 섹션의 단계를 완료합니다. 시작하기 전에 영향을 받는 VM의 OS 디스크 스냅샷 백업으로 사용합니다. 자세한 내용은 디스크 스냅샷을 참조하세요.

RDP 보안 확인

먼저 RDP 포트 3389에 대한 네트워크 보안 그룹이 보안되지 않는지(열기) 확인하도록 검사. 보호되지 않고 *를 인바운드의 원본 IP 주소로 표시하는 경우 RDP 포트를 특정 사용자의 IP 주소로 제한한 다음 RDP 액세스를 테스트합니다. 실패하면 다음 섹션의 단계를 완료합니다.

직렬 컨트롤 사용

직렬 콘솔을 사용하거나 VM의 OS 디스크를 복구 VM에 연결하여 오프라인으로 VM을 복구합니다.

시작하려면 직렬 콘솔에 연결하고 PowerShell instance 엽니다. 직렬 콘솔이 VM에서 사용하도록 설정되지 않은 경우 오프라인으로 VM 복구 섹션으로 이동합니다.

단계: 1 RDP 포트 확인

  1. PowerShell instance NETSTAT를 사용하여 포트 3389가 다른 애플리케이션에서 사용되는지 여부를 검사.

    Netstat -anob |more
    
  2. Termservice.exe 3389 포트를 사용하는 경우 2단계로 이동합니다. Termservice.exe 이외의 다른 서비스 또는 애플리케이션이 3389 포트를 사용하는 경우 다음 단계를 수행합니다.

    1. 3389 서비스를 사용하는 애플리케이션에 대한 서비스를 중지합니다.

      Stop-Service -Name <ServiceName> -Force
      
    2. 터미널 서비스를 시작합니다.

      Start-Service -Name Termservice
      
  3. 애플리케이션을 중지할 수 없거나 이 메서드가 적용되지 않는 경우 RDP의 포트를 변경합니다.

    1. 포트 변경:

      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
      
    2. 새 포트에 대한 방화벽을 설정합니다.

      Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
      
    3. Azure Portal RDP 포트의 새 포트에 대한 네트워크 보안 그룹을 업데이트합니다.

2단계: RDP 자체 서명된 인증서에 대한 올바른 권한 설정

  1. PowerShell instance 다음 명령을 하나씩 실행하여 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"
    
  2. 이 방법을 사용하여 인증서를 갱신할 수 없는 경우 RDP 자체 서명된 인증서를 원격으로 갱신해 보세요.

    1. 문제가 발생하는 VM에 연결된 작업 중인 VM에서 실행 상자에 mmc를 입력하여 Microsoft 관리 콘솔을 엽니다.

    2. 파일 메뉴에서 스냅인 추가/제거를 선택하고 인증서를 선택한 다음, 추가를 선택합니다.

    3. 컴퓨터 계정을 선택하고 다른 컴퓨터를 선택한 다음 문제 VM의 IP 주소를 추가합니다.

    4. 원격 데스크톱\인증서 폴더로 이동하여 인증서를 마우스 오른쪽 단추로 클릭한 다음 삭제를 선택합니다.

    5. 직렬 콘솔의 PowerShell instance 원격 데스크톱 구성 서비스를 다시 시작합니다.

      Stop-Service -Name "SessionEnv"
      
      Start-Service -Name "SessionEnv"
      
  3. 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
    
  4. VM을 다시 시작한 다음 VM에 대한 원격 데스크톱 연결 시작을 시도합니다. 오류가 계속 발생하는 경우 다음 단계로 이동합니다.

3단계: 지원되는 모든 TLS 버전 사용

RDP 클라이언트는 TLS 1.0을 기본 프로토콜로 사용합니다. 그러나 새 표준이 된 TLS 1.1로 변경할 수 있습니다. VM에서 TLS 1.1을 사용하지 않도록 설정하면 연결이 실패합니다.

  1. CMD instance 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
    
  2. AD 정책이 변경 내용을 덮어쓰지 않도록 하려면 그룹 정책 업데이트를 일시적으로 중지합니다.

    REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
    
  3. 변경 내용이 적용되도록 VM을 다시 시작합니다. 문제가 해결되면 다음 명령을 실행하여 그룹 정책을 다시 사용하도록 설정합니다.

    sc config gpsvc start= auto sc start gpsvc
    
    gpupdate /force
    

    변경 내용이 되돌아가면 회사 도메인에 Active Directory 정책이 있음을 의미합니다. 이 문제가 다시 발생하지 않도록 해당 정책을 변경해야 합니다.

오프라인으로 VM 복구

OS 디스크를 복구 VM에 연결

  1. OS 디스크를 복구 VM에 연결합니다.
  2. OS 디스크가 복구 VM에 연결되면 디스크 관리 콘솔에서 디스크에 온라인 플래그가 지정되어 있는지 확인합니다. 연결된 OS 디스크에 할당된 드라이브 문자를 확인합니다.
  3. 복구 VM에 대한 원격 데스크톱 연결을 시작합니다.

덤프 로그 및 직렬 콘솔 사용

덤프 로그 및 직렬 콘솔을 사용하도록 설정하려면 다음 스크립트를 실행합니다.

  1. 관리자 권한 명령 프롬프트 세션을 엽니다(관리자 권한으로 실행).

  2. 다음 스크립트를 실행합니다.

    이 스크립트에서는 연결된 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 폴더에 대한 권한 다시 설정

  1. 관리자 권한 명령 프롬프트 세션을 엽니다(관리자 권한으로 실행).

  2. 다음 스크립트를 실행합니다. 이 스크립트에서는 연결된 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 버전 사용

  1. 관리자 권한 명령 프롬프트 세션을 열고(관리자 권한으로 실행) 다음 명령을 실행합니다. 다음 스크립트에서는 드라이버 문자가 연결된 OS 디스크에 할당된 것으로 가정합니다. 이 드라이브 문자를 VM에 적합한 값으로 바꿉니다.

  2. 사용하도록 설정된 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
    
  3. 키가 없거나 해당 값이 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
    
  4. 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
    
  5. OS 디스크를 분리하고 VM을 다시 만들고 문제가 해결되었는지 여부를 검사.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.