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

원격 세션 연결 끊김 오류 해결: 원격 데스크톱 라이선스 서버 및 클라이언트 액세스 라이선스(CAL) 문제 완벽 가이드

RDP 클라이언트가 원격 데스크톱 서비스 세션 호스트(RDSH) 역할이 설치된 Windows Server에 연결하지 못하는 상황에서 발생하는 RDS 라이선싱 관련 대표적인 문제들을 살펴보겠습니다.

RDP 클라이언트가 RDS 호스트에 연결할 때 라이선스 오류가 발생하는 주요 원인은 다음과 같습니다.

  • 원격 데스크톱 서비스 설정에 클라이언트 라이선스(RDS CAL)를 받아올 RDS 라이선스 서버가 지정되어 있지 않은 경우
  • RDS 라이선스 서버의 사용 가능한 CAL이 모두 소진된 경우
  • RDP 클라이언트가 만료된 임시 RDS 라이선스로 연결을 시도하는 경우

원격 세션 연결 끊김: 이 컴퓨터에 사용 가능한 원격 데스크톱 클라이언트 액세스 라이선스가 없습니다

먼저 클라이언트가 라이선스 서버로부터 RDS CAL을 받는 과정과 관련된 오류를 살펴보겠습니다.

Remote session was disconnected because there are no Remote Desktop client access licenses available for this computer. Please contact the server administrator.

관리자 모드(mstsc.exe /admin)로 RDSH 서버에 연결한 후 RD 라이선스 진단 도구(RD Licensing Diagnoser)를 실행합니다. 모든 설정이 올바르게 구성되어 있다면 RDS 라이선스 서버 이름과 라이선스 유형(사용자 단위/장치 단위)이 표시되어야 합니다.

RD 라이선스 관리자 콘솔(licmgr.exe)을 사용해 RDS 라이선스 서버에 연결한 뒤, 필요한 유형(사용자 단위 또는 장치 단위)의 여유 라이선스가 있는지 확인합니다. 여유 RDS CAL이 모두 소진되었다면 새 CAL 팩을 구매하거나, 기존 사용자가 라이선스를 해제하기를 기다리거나, 콘솔에서 직접 사용하지 않는 라이선스를 해지할 수 있습니다(해당 컴퓨터/사용자를 마우스 오른쪽 버튼으로 클릭한 후 라이선스 해지(Revoke License) 선택).

아래 예제에서는 여유 RDS CAL이 존재하며 사용자들에게 발급된 상태임을 확인할 수 있습니다(발급됨 = 44).

참고: RDSH 서버가 AD 도메인이 아닌 워크그룹 환경에 배포된 경우 사용자 단위(Per User) RDS 라이선스를 사용할 수 없습니다. 이 경우 사용자는 연결 시 항상 임시 로컬 장치 단위(Per Device) 라이선스를 받게 됩니다.

대부분 이 경우 클라이언트 컴퓨터가 만료된 임시 RDP 라이선스로 RDSH 서버에 연결을 시도하고 있을 가능성이 높습니다. 클라이언트가 처음 연결할 때 RDS 라이선스 서버에 접근할 수 없었다면, 클라이언트에는 180일 유효한 임시 RDP 라이선스가 발급됩니다. 이때는 클라이언트 장치의 레지스트리에서 만료된 라이선스 정보를 재설정해야 합니다.

클라이언트 컴퓨터(Windows 10 기준)에서 다음 단계를 수행합니다.

  1. 레지스트리 편집기(regedit.exe)를 실행합니다.
  2. 레지스트리 키 HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing을 삭제합니다.
  3. 레지스트리 편집기를 닫고 mstsc.exe(원격 데스크톱 연결)를 관리자 권한으로 실행합니다.
  4. RDS 서버에 연결합니다. 이때 MSLicensing 레지스트리 키가 자동으로 다시 생성되며, 컴퓨터는 새로운 RDP 라이선스를 발급받게 됩니다.

만약 mstsc.exe를 관리자 권한으로 실행하지 않으면 모든 RDP 연결 시도에서 다음 오류가 나타납니다.

The remote computer disconnected the session because of an error in the licensing protocol. Please try connecting to the remote computer again or contact your server administrator.

원격 세션 연결 끊김: 라이선스를 제공할 수 있는 원격 데스크톱 라이선스 서버가 없습니다

한 고객은 Windows Server 2012 R2로 구축한 RDS 서버 팜에서 문제를 겪었습니다. 라이선스 서버 역할이 설치·구성되어 있고 RDP CAL도 활성화되어 있었음에도 불구하고, RDS 서버가 사용자에게 터미널 라이선스를 발급하지 못하는 상황이 발생했습니다.

사용자가 RDP로 터미널 서버에 연결을 시도하면 다음과 같은 오류가 표시됩니다.

The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license. Please contact the server administrator.

관리자 모드(mstsc /admin)로 서버 콘솔에 연결한 후 서버 관리자를 열고 RDS 설정(원격 데스크톱 서비스 → 배포 개요 → 작업 → 배포 속성 편집)으로 이동합니다. RDSH 구성에 올바른 원격 데스크톱 라이선스 서버와 RDS CAL 유형(장치 단위 또는 사용자 단위)이 지정되어 있는지 확인합니다.

PowerShell을 통해서도 RDS 라이선스 서버 설정을 확인할 수 있습니다.

Get-RDLicenseConfiguration

위 결과에서 구성에 LicenseServer가 지정되어 있고 사용자 단위(PerUser) 라이선싱 유형이 사용 중임을 확인할 수 있습니다.

RDSH 호스트에서 RDS 라이선스 서버로 접근할 때 다음 포트가 방화벽에 의해 차단되지 않았는지도 점검합니다: TCP 135, UDP 137, UDP 138, TCP 139, TCP 445, TCP 49152–65535(RPC 범위). RDS 라이선스 서버에 접근할 수 없는 경우 라이선스 진단기에 다음 오류가 표시됩니다.

License server rdslic_hostname is not available. This could be caused by network connectivity problems, the Remote Desktop Licensing service is stopped on the license server, or RD Licensing isn't available.

RDS 120일 유예 기간 초기화 방법 (L$RTMTIMEBOMB)

RDS 호스트의 이벤트 뷰어에서 이벤트를 자세히 살펴봅니다. 다음과 같은 오류가 기록되어 있을 수 있습니다.

EventID: 1128
Source: TerminalServices-RemoteConnectionManager
The RD Licensing grace period has expired and the service has not registered with a license server with installed licenses. A RD Licensing server is required for continuous operation. A Remote Desktop Session Host server can operate without a license server for 120 days after initial start up.

RD 라이선스 진단기에도 다음과 같은 오류가 표시될 가능성이 높습니다.

The grace period for the Remote Desktop Session Host server has expired, but the RD Session Host server hasn't been configured with any license servers. Connections to the RD Session Host server will be denied unless a license server is configured for the RD Session Host server.

이는 RDSH 서버의 유예 기간이 만료되었음을 의미하며, 유예 모드를 연장하거나 RDS 라이선스 서버에 호스트를 등록해 활성화해야 합니다.

RDS 유예 기간은 Windows Server에서 원격 데스크톱 서비스를 120일간 무료로 사용할 수 있도록 허용하는 제도입니다. RDSH에 관리자로 로그인할 때 다음과 같은 오류 메시지를 본 적이 있을 것입니다.

Licensing mode for the Remote Desktop Session Host is not configured.
Remote Desktop Service will stop working in 86 days.

RDS 유예 기간 종료까지 남은 일수는 관리자 권한 명령 프롬프트에서 다음 명령으로 확인할 수 있습니다.

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays

DaysLeft = 0으로 표시되면 해당 RDSH 호스트의 유예 기간이 이미 만료되었음을 의미합니다.

RDS에서 유예 기간을 연장하려면 서버에서 유예 기간을 결정하는 레지스트리 값을 제거해야 합니다. 서버의 RDS 유예 기간 기준 날짜는 다음 레지스트리 키에 위치한 reg_binary 형식의 L$RTMTIMEBOMB 매개변수(이름이 꽤 재미있습니다. TIME BOMB, 시한폭탄이죠)에 저장됩니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod

이 레지스트리 값을 삭제해야 하지만, 일반적인 관리자 권한으로는 삭제할 수 없습니다.

Unable to delete all specified values.

이 레지스트리 값을 삭제하려면 상위 키의 사용 권한을 열어 자신의 계정에 키 소유자 권한을 부여한 후, Administrators 그룹에 모든 권한(Full Control)을 설정해야 합니다.

이제 L$RTMTIMEBOMB 값을 마우스 오른쪽 버튼으로 클릭해 삭제합니다.

RDSH 서버를 재시작한 후 RDP 클라이언트로 연결합니다. 원격 데스크톱 라이선스 관리자를 통해 RDS CAL이 정상적으로 발급되었는지 확인합니다.

만약 RDS CAL을 받지 못했다면 이벤트 뷰어에 다음 이벤트가 기록되어 있는지 확인합니다.

Event ID: 1130
Source: TerminalServices-RemoteConnectionManager
The Remote Desktop Session Host server does not have a Remote Desktop license server specified. To specify a license server for the Remote Desktop Session Host server, use the Remote Desktop Session Host Configuration tool.

다음 PowerShell 명령으로 RDS 라이선스 서버가 지정되어 있는지 확인할 수 있습니다.

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()

결과에서 RDS 라이선스 서버가 설정되어 있지 않은 것으로 나타나면(SpecifiedLSList가 비어 있음), 다음 명령으로 RD 라이선스 서버를 강제로 지정합니다.

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.SetSpecifiedLicenseServerList("lon-rdslic.woshub.com")

그룹 정책(GPO)을 통해서도 라이선스 서버 이름과 라이선스 유형을 설정할 수 있습니다. 로컬 GPO를 사용하는 경우 gpedit.msc를 실행한 후 컴퓨터 구성 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 서비스 → 원격 데스크톱 세션 호스트 → 라이선싱 섹션으로 이동하여 다음 옵션을 설정합니다.

  • 지정된 원격 데스크톱 라이선스 서버 사용(Use the specified Remote Desktop license servers)
  • 원격 라이선싱 모드 설정(Set the Remote licensing mode)

이제 RDS 호스트가 RDS 라이선스 서버로부터 정상적으로 라이선스를 받아 RDP 사용자들에게 발급할 수 있게 됩니다.