Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

RDP 연결 시 '내부 오류가 발생했습니다(An internal error has occurred)' 오류 해결 방법

Windows 10 클라이언트에서 Windows Server 2012 R2 기반의 RDSH(RD 세션 호스트) 서버에 RDP로 접속하려던 중 An internal error has occurred(내부 오류가 발생했습니다)이라는 낯선 오류 메시지를 마주했습니다. 전날까지 원격 데스크톱 연결이 정상적으로 작동했는데, RemoteApps를 설치·구성하고 서버를 재시작한 이후에는 데스크톱에 접속할 수 없게 되었습니다. 흥미로운 점은 연결 시 사용자에게 비밀번호 입력을 요구하는 것으로 보아 원격 데스크톱 서비스 자체는 동작하고 있다는 사실입니다.

조사해 보니 RDP 콘솔에 나타나는 '내부 오류가 발생했습니다' 메시지는 다양한 상황에서 발생할 수 있으며, 원격 데스크톱 서버 측 문제와 클라이언트 측 문제 모두가 원인이 될 수 있습니다. 이 글에서는 해당 문제를 해결할 수 있는 여러 가지 방법과 실제로 제 경우에 효과가 있었던 해결 시나리오를 소개합니다.

1. RDP 포트 및 방화벽 확인

가장 먼저 RDS 서버의 RDP 포트인 3389번이 연결을 정상적으로 수신하는지, 그리고 방화벽에 의해 차단되고 있지 않은지 확인하세요. PowerShell에서 아래 명령어로 간단히 점검할 수 있습니다.

Test-NetConnection your_rdp_server –port 3389

2. RDP 연결 로그 분석

RDS 서버의 RDP 연결 로그를 살펴보았지만 특별한 오류는 발견되지 않았습니다. Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational 로그에는 RDP 세션이 정상적으로 생성된 것으로 기록되어 있었습니다.

The server accepted a new TCP connection from client 192.168.1.60:64379.
Connection RDP-Tcp#4 created

그러나 이후 별도의 오류 없이 RDP 세션이 종료된 것을 확인할 수 있었습니다.

The server has terminated main RDP connection with the client.
The disconnect reason is 0

3. 원격 데스크톱 서비스(TermService) 재시작

원격 서버에서 원격 데스크톱 서비스의 상태를 확인하고 재시작해 보세요. Services.msc 콘솔의 '다른 컴퓨터에 연결' 옵션을 통해 원격으로 처리할 수도 있지만, PowerShell을 이용하면 더 간편합니다.

먼저 서비스 상태를 확인합니다.

(Get-Service TermService -ComputerName ny-rds1).status

서비스가 실행 중이라면 강제로 재시작합니다.

Get-Service TermService -ComputerName ny-rds1 | Restart-Service –force –verbose

하지만 이 방법으로도 문제는 해결되지 않았습니다.

4. 알려진 기타 해결 방법

웹에서 찾아낸 추가적인 해결 방법들은 다음과 같습니다.

  • EventID 1057 오류: TerminalServices-RemoteConnectionManager 이벤트 로그에 'RD 세션 호스트 서버가 SSL 연결 인증용 새 자체 서명 인증서 생성에 실패했습니다'라는 EventID 1057이 기록되어 있다면, C:\ProgramData\Microsoft\Crypto\RSA 폴더로 이동하여 Machinekeys 폴더명을 Machinekeys_bak으로 변경한 뒤 TermService를 재시작합니다.
  • H.264/AVC 하드웨어 인코딩 정책 문제: Windows 10 1809 환경에서 원격 컴퓨터에 'Configure H.264/AVC hardware encoding for Remote Desktop connections' 정책이 활성화되어 있으면 이 오류가 발생할 수 있습니다(정책 위치: 컴퓨터 구성 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 서비스 → 원격 데스크톱 세션 호스트 → 원격 세션 환경). 이 경우 레지스트리 키 HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client에 값이 1fClientDisableUDP 파라미터를 생성하여 RDP의 UDP 프로토콜을 비활성화하면 해결됩니다.
  • MaxOutstandingConnections 값 증가: 연결 버튼을 누르는 순간 즉시 오류가 발생한다면(원격 데스크톱 서버가 연결 시도를 즉시 거부하는 것처럼 보인다면), 최대 대기 RDP 연결 수 한도를 늘려보세요. Windows 10 SKU의 기본값은 100, Windows Server는 3000입니다. regedit.exe를 실행하여 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ 키에 값이 10000인 DWORD 형식의 MaxOutstandingConnections 파라미터를 생성합니다. (특수 RDP 카운터는 정상적이지 않은 RDP 로그인까지 집계하며, 지정된 MaxOutstandingConnections 값에 도달하면 RDP 접근이 차단됩니다.)

5. 실제로 효과가 있었던 해결 방법: RDP 캐시 삭제

위에서 소개한 어떤 방법도 제 경우에는 해당되지 않았습니다. 그러다 우연히 다른 컴퓨터에서는 이 RDS 서버에 전혀 문제없이 접속할 수 있다는 사실을 발견했습니다. 이는 문제가 원격 데스크톱 서버가 아니라 내 컴퓨터에 있다는 의미였습니다.

레지스트리 키 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers에서 RDP 연결 기록을 삭제하고, C:\Users\%Username%\AppData\Local\Microsoft\Terminal Server Client\Cache 경로의 RDP 캐시를 초기화했습니다(작업 전에 실행 중인 mstsc.exe 세션을 모두 종료해야 합니다).

del "C:\Users\%Username%\AppData\Local\Microsoft\Terminal Server Client\cache"

이후 컴퓨터를 재시작하자 RDP 연결 오류가 완전히 사라졌습니다!

동일한 오류로 고생하고 계신다면, 서버 측 점검과 함께 클라이언트 PC의 RDP 연결 기록 및 캐시 삭제도 반드시 시도해 보시기 바랍니다. 생각보다 단순한 원인이 숨어 있는 경우가 많습니다.