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

Windows 11/10에서 원격 데스크톱(RDP) 연결 문제 해결하는 방법 총정리

RDP(원격 데스크톱 프로토콜)는 마이크로소프트가 개발한 독점 프로토콜로, 네트워크 연결을 통해 다른 컴퓨터에 접속할 수 있는 그래픽 인터페이스를 제공합니다. 사용자는 RDP 클라이언트 소프트웨어를 통해 접속하고, 접속 대상 컴퓨터에는 RDP 서버 소프트웨어가 실행되고 있어야 합니다.

이 글에서는 Windows 11/10에서 일반적인 원격 데스크톱 연결 문제를 해결하는 방법을 단계별로 살펴보겠습니다.

원격 데스크톱 연결 문제 해결 방법

원격 데스크톱 클라이언트가 작동하지 않거나 원격 데스크톱에 연결할 수 없는데도 오류 메시지나 증상이 나타나지 않아 원인 파악이 어려운 경우, 아래의 문제 해결 절차를 순서대로 시도해 보세요.

1] 로컬 컴퓨터의 RDP 프로토콜 상태 확인

로컬 컴퓨터에서 RDP 프로토콜의 상태를 확인하고 변경하려면 먼저 원격 데스크톱 기능을 활성화해야 합니다. 설정 앱뿐만 아니라 명령 프롬프트(CMD) 또는 PowerShell을 통해서도 원격 데스크톱을 활성화할 수 있습니다.

2] 원격 컴퓨터의 RDP 프로토콜 상태 확인

원격 컴퓨터의 RDP 프로토콜 상태를 확인하거나 변경하려면 네트워크 레지스트리 연결을 사용합니다.

레지스트리 작업이므로 작업 전에 레지스트리 백업 또는 시스템 복원 지점 생성을 미리 해두는 것이 안전합니다. 준비가 되었다면 아래 순서대로 진행하세요.

  • Windows 키 + R을 눌러 실행 대화 상자를 엽니다.
  • 실행 대화 상자에 regedit를 입력하고 Enter 키를 눌러 레지스트리 편집기를 실행합니다.
  • 레지스트리 편집기에서 파일을 선택한 후 네트워크 레지스트리 연결을 선택합니다.
  • 컴퓨터 선택 대화 상자에 원격 컴퓨터 이름을 입력합니다.
  • 이름 확인을 선택합니다.
  • 확인을 선택합니다.
  • 다음 레지스트리 키 경로로 이동합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
  • 오른쪽 창에서 fDenyTSConnections 키를 두 번 클릭하여 속성을 편집합니다.
  • RDP를 활성화하려면 fDenyTSConnections의 값 데이터를 1에서 0으로 변경합니다.

값이 0이면 RDP가 활성화된 것이고, 값이 1이면 비활성화된 것입니다.

관련 정보: Windows 10에서 원격 데스크톱 옵션이 회색으로 비활성화되어 있는 경우

3] 로컬 컴퓨터에서 GPO(그룹 정책 개체)가 RDP를 차단하는지 확인

사용자 인터페이스에서 RDP를 켤 수 없거나, fDenyTSConnections 값을 변경했는데도 다시 1로 되돌아간다면 GPO가 컴퓨터 수준 설정을 덮어쓰고 있을 가능성이 있습니다.

로컬 컴퓨터의 그룹 정책 구성을 확인하려면 다음과 같이 진행하세요.

  • Windows 키 + R을 눌러 실행 대화 상자를 엽니다.
  • 실행 대화 상자에 cmd를 입력한 후 Ctrl + Shift + Enter를 눌러 관리자 권한으로 명령 프롬프트를 실행합니다.
  • 명령 프롬프트 창에 아래 명령을 입력하고 Enter 키를 누릅니다.
gpresult /H c:\gpresult.html
  • 명령 실행이 완료되면 gpresult.html 파일을 엽니다.
  • 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > 원격 데스크톱 서비스 > 원격 데스크톱 세션 호스트 > 연결 경로에서 'Remote Desktop Services를 사용하여 사용자가 원격으로 연결 허용' 정책을 찾습니다.

해당 정책 설정이 사용으로 되어 있다면 그룹 정책이 RDP 연결을 차단하고 있지 않은 것입니다. 만약 사용 안 함으로 되어 있다면 적용 우선 GPO(Winning GPO)를 확인하세요. 이 GPO가 RDP 연결을 차단하는 원인입니다.

4] 원격 컴퓨터에서 GPO가 RDP를 차단하는지 확인

원격 컴퓨터의 그룹 정책 구성을 확인하려면 관리자 권한 CMD에서 아래 명령을 실행합니다.

gpresult /S <컴퓨터 이름> /H c:\gpresult-<컴퓨터 이름>.html

이 명령이 생성하는 파일(gpresult-<컴퓨터 이름>.html)은 로컬 컴퓨터 버전(gpresult.html)과 동일한 형식의 정보를 담고 있습니다.

5] 차단 중인 GPO 수정

그룹 정책 설정은 GPE(그룹 정책 개체 편집기)와 GPMC(그룹 정책 관리 콘솔)에서 수정할 수 있습니다.

차단 정책을 수정하려면 다음 방법 중 하나를 사용하세요.

GPE를 사용하는 경우:

  • Windows 키 + R을 눌러 실행 대화 상자를 엽니다.
  • 실행 대화 상자에 gpedit.msc를 입력하고 Enter 키를 눌러 로컬 그룹 정책 편집기를 실행합니다.
  • 왼쪽 창에서 아래 경로로 이동합니다.
컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > 원격 데스크톱 서비스 > 원격 데스크톱 세션 호스트 > 연결
  • 오른쪽 창에서 'Remote Desktop Services를 사용하여 사용자가 원격으로 연결 허용' 항목을 두 번 클릭하여 속성을 편집합니다.
  • 정책을 사용 또는 구성되지 않음으로 설정합니다.
  • 적용 > 확인을 클릭하고 편집기를 종료합니다.
  • 문제가 발생한 컴퓨터에서 관리자 권한으로 명령 프롬프트를 열고 아래 명령을 실행합니다.
gpupdate /force

GPMC를 사용하는 경우: 차단 정책이 적용된 OU(조직 구성 단위)로 이동하여 해당 정책을 OU에서 삭제합니다.

6] RDP 서비스 상태 확인

로컬(클라이언트) 컴퓨터와 원격(대상) 컴퓨터 양쪽 모두에서 다음 서비스들이 실행 중이어야 합니다.

  • 원격 데스크톱 서비스(TermService)
  • 원격 데스크톱 서비스 사용자 모드 포트 리디렉터(UmRdpService)

어느 한쪽 컴퓨터에서 하나 또는 두 서비스 모두 실행되고 있지 않다면 시작해야 합니다.

진행 방법은 다음과 같습니다.

  • Windows 키 + R을 눌러 실행 대화 상자를 엽니다.
  • 실행 대화 상자에 services.msc를 입력하고 Enter 키를 눌러 서비스 창을 엽니다.
  • 서비스 창에서 위의 두 서비스를 찾습니다.
  • 항목을 두 번 클릭하여 속성을 엽니다.
  • 속성 창에서 시작 버튼을 클릭합니다.
  • 확인을 클릭합니다.

PowerShell을 사용해서도 서비스를 로컬 또는 원격으로 관리할 수 있습니다(원격 컴퓨터가 원격 PowerShell cmdlet을 허용하도록 구성된 경우).

7] RDP 수신기(RDP Listener) 상태 확인

이 절차는 로컬과 원격에서 동일하게 동작하는 cmdlet을 사용할 수 있어 PowerShell을 이용합니다. 로컬 컴퓨터의 경우 관리자 권한 명령 프롬프트를 사용할 수도 있습니다.

원격 컴퓨터에 연결하려면 다음과 같이 진행하세요.

  • Windows 키 + X를 눌러 고급 사용자 메뉴를 엽니다.
  • 키보드에서 A 키를 눌러 관리자 권한 PowerShell을 실행합니다.
  • PowerShell 콘솔에 아래 명령을 입력하고 Enter 키를 누릅니다.
Enter-PSSession -ComputerName <컴퓨터 이름>
  • qwinsta를 입력합니다.

목록에 rdp-tcp수신 대기(Listen) 상태로 표시되면 RDP 수신기가 정상적으로 작동 중입니다. 이 경우 아래 10번 단계로 건너뛰세요. 그렇지 않다면 정상 작동하는 컴퓨터에서 RDP 수신기 구성을 내보내야 합니다.

진행 방법:

  • 문제가 발생한 컴퓨터와 동일한 운영 체제 버전을 사용하는 컴퓨터에 로그인하고 해당 컴퓨터의 레지스트리에 접근합니다.
  • 다음 레지스트리 항목으로 이동합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • 해당 항목을 .reg 파일로 내보냅니다.
  • 내보낸 .reg 파일을 문제가 발생한 컴퓨터로 복사합니다.
  • RDP 수신기 구성을 가져오려면 문제가 발생한 컴퓨터에서 관리자 권한 PowerShell 창을 열거나(또는 PowerShell 창을 열어 해당 컴퓨터에 원격으로 연결) 진행합니다.

기존 레지스트리 항목을 백업하려면 아래 cmdlet을 입력합니다.

cmd /c 'reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp" C:\Rdp-tcp-backup.reg'

기존 레지스트리 항목을 삭제하려면 아래 cmdlet을 입력합니다.

Remove-Item -path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp' -Recurse -Force

새 레지스트리 항목을 가져온 후 서비스를 재시작하려면 아래 cmdlet을 실행합니다. <filename> 자리에는 내보낸 .reg 파일 이름을 입력하세요.

cmd /c 'regedit /s c:\<filename>.reg'
Restart-Service TermService -Force

cmdlet 실행이 끝나면 원격 데스크톱 연결을 다시 시도하여 구성을 테스트할 수 있습니다. 여전히 연결되지 않으면 문제가 발생한 컴퓨터를 재시작하세요.

그래도 연결되지 않는다면 다음 문제 해결 단계인 RDP 자체 서명 인증서 상태 확인으로 진행합니다.

8] RDP 자체 서명 인증서 상태 확인

여전히 연결할 수 없다면 다음과 같이 진행하세요.

  • Windows 키 + R을 눌러 실행 대화 상자를 엽니다.
  • 실행 대화 상자에 mmc를 입력하고 Enter 키를 눌러 Microsoft 관리 콘솔(MMC)을 실행합니다.
  • 파일 메뉴를 클릭합니다.
  • 스냅인 추가/제거를 선택합니다.
  • 스냅인 목록에서 인증서를 선택합니다.
  • 추가를 클릭합니다.
  • 관리할 인증서 저장소를 선택하라는 메시지가 표시되면 컴퓨터 계정을 선택합니다.
  • 다음을 클릭합니다.
  • 문제가 발생한 컴퓨터를 선택합니다.
  • 마침 버튼을 클릭합니다.
  • 확인을 클릭합니다.
  • 원격 데스크톱 아래의 인증서 폴더에서 RDP 자체 서명 인증서를 삭제합니다.
  • 문제가 발생한 컴퓨터에서 원격 데스크톱 서비스를 재시작합니다.
  • 인증서 스냅인을 새로 고칩니다.
  • RDP 자체 서명 인증서가 다시 생성되지 않았다면 MachineKeys 폴더의 권한을 확인합니다.

9] MachineKeys 폴더 권한 확인

문제가 발생한 컴퓨터에서 다음과 같이 진행합니다.

  • Windows 키 + E를 눌러 파일 탐색기를 엽니다.
  • 아래 디렉터리 경로로 이동합니다.
C:\ProgramData\Microsoft\Crypto\RSA\
  • 해당 위치에서 MachineKeys 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성 > 보안 > 고급을 차례로 선택합니다.

다음 권한이 올바르게 구성되어 있는지 확인하세요.

  • Builtin\Administrators: 모든 권한
  • Everyone: 읽기, 쓰기

10] RDP 수신기 포트 확인

로컬(클라이언트) 컴퓨터와 원격(대상) 컴퓨터 양쪽 모두에서 RDP 수신기는 3389번 포트에서 수신 대기 중이어야 하며, 다른 응용 프로그램이 이 포트를 사용해서는 안 됩니다.

RDP 포트를 확인하거나 변경하려면 레지스트리 편집기를 사용합니다. 안전을 위해 레지스트리 백업 또는 시스템 복원 지점 생성을 먼저 진행한 후 아래와 같이 계속하세요.

  • 레지스트리 편집기를 열고 파일을 선택한 후 네트워크 레지스트리 연결을 선택합니다.
  • 컴퓨터 선택 대화 상자에 원격 컴퓨터 이름을 입력합니다.
  • 이름 확인을 선택합니다.
  • 확인을 선택합니다.
  • 다음 레지스트리 키 경로로 이동합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • 오른쪽 창에서 PortNumber 항목을 두 번 클릭하여 속성을 편집합니다.
  • 속성 창에서 값 데이터가 3389가 아닌 다른 값이라면 3389로 변경합니다.
  • 확인을 클릭하여 변경 사항을 저장합니다.
  • 원격 데스크톱 서비스를 재시작합니다.

11] 다른 응용 프로그램이 같은 포트를 사용하는지 확인

다음과 같이 진행하세요.

  • 관리자 권한으로 PowerShell을 엽니다.
  • 원격 컴퓨터에 연결하려면 아래 명령을 실행합니다.
Enter-PSSession -ComputerName <컴퓨터 이름>

다음으로 아래 명령을 실행합니다.

cmd /c 'netstat -ano | find "3389"'
  • TCP 3389번 포트(또는 지정된 RDP 포트)에 대해 수신 대기(Listening) 상태의 항목을 찾습니다.

참고: 해당 포트를 사용 중인 프로세스 또는 서비스의 PID(프로세스 식별자)는 PID 열에 표시됩니다.

  • 3389번 포트(또는 지정된 RDP 포트)를 사용 중인 응용 프로그램이 무엇인지 확인하려면 아래 명령을 입력합니다.
cmd /c 'tasklist /svc | find "<3389에서 수신 대기 중인 PID>"'
  • netstat 출력 결과에서 해당 포트와 연관된 PID 번호의 항목을 찾습니다. 해당 PID와 연관된 서비스나 프로세스는 오른쪽 열에 표시됩니다.
  • 원격 데스크톱 서비스(TermServ.exe)가 아닌 다른 응용 프로그램이나 서비스가 포트를 사용 중이라면, 다음 방법 중 하나로 충돌을 해결할 수 있습니다.

다른 응용 프로그램이나 서비스가 다른 포트를 사용하도록 구성합니다(권장).

다른 응용 프로그램이나 서비스를 제거합니다.

RDP가 다른 포트를 사용하도록 구성한 후 원격 데스크톱 서비스를 재시작합니다(권장하지 않음).

12] 방화벽이 RDP 포트를 차단하는지 확인

psping 도구를 사용하면 3389번 포트를 통해 문제가 발생한 컴퓨터에 도달할 수 있는지 테스트할 수 있습니다.

진행 방법:

  • 문제가 없는 다른 컴퓨터에서 psping을 다운로드합니다.
  • 관리자 권한으로 명령 프롬프트 창을 열고, psping이 설치된 디렉터리로 이동한 후 아래 명령을 입력합니다.
psping -accepteula <컴퓨터 IP>:3389
  • psping 명령의 출력 결과에서 다음과 같은 항목들을 확인합니다.

<컴퓨터 IP>에 연결 중: 원격 컴퓨터에 도달 가능함.

(0% 손실): 모든 연결 시도 성공.

원격 컴퓨터가 네트워크 연결을 거부했습니다: 원격 컴퓨터에 도달 불가능함.

(100% 손실): 모든 연결 시도 실패.

  • 여러 대의 컴퓨터에서 psping을 실행하여 문제가 발생한 컴퓨터에 대한 연결 가능 여부를 테스트합니다.
  • 문제가 발생한 컴퓨터가 모든 컴퓨터의 연결을 차단하는지, 일부만 차단하는지, 아니면 특정 한 대의 컴퓨터만 차단하는지 기록해 둡니다.

추가로 시도할 수 있는 조치는 다음과 같습니다.

  • 네트워크 관리자에게 문의하여 네트워크가 문제가 발생한 컴퓨터로의 RDP 트래픽을 허용하는지 확인합니다.
  • 원본 컴퓨터와 문제가 발생한 컴퓨터 사이에 위치한 방화벽(문제가 발생한 컴퓨터의 Windows 방화벽 포함)의 구성을 조사하여 방화벽이 RDP 포트를 차단하고 있는지 확인합니다.

이 가이드가 원격 데스크톱(RDP) 연결 문제를 성공적으로 해결하는 데 도움이 되길 바랍니다!