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

Windows에서 RDP/RDS 세션 시간 제한(타임아웃) 구성 방법

기본적으로 사용자가 터미널 클라이언트(mstsc.exe, RDCMan 또는 원격 데스크톱 HTML5 웹 클라이언트)에서 로그오프하지 않고 창 우측 상단의 X 버튼을 눌러 RDP/RDS 세션 창을 닫으면, 해당 세션은 연결 끊김(disconnected) 상태로 전환됩니다. 이 상태에서는 열려 있던 모든 앱, 파일, 창이 원격 데스크톱 서버에서 계속 실행되면서 리소스를 소비합니다.

Windows에서는 기본적으로 사용자의 RDP 세션이 사용자나 관리자가 직접 종료하거나 서버를 재시작하기 전까지 연결 끊김 상태로 유지될 수 있습니다. 사용자 입장에서는 언제든 기존 세션에 다시 접속해 실행 중인 프로그램이나 열려 있는 파일로 이어서 작업할 수 있다는 점에서 편리하지만, 서버 관리자 입장에서는 여러 가지 문제의 원인이 될 수 있습니다.

연결 끊긴 세션이 서버에 미치는 영향

아래 스크린샷에서 확인할 수 있듯이, Windows Server 2016이 설치된 RDS 서버에서 연결 끊긴 사용자 세션들이 서버 RAM의 약 40%를 차지하고 있습니다. 이 외에도 연결 끊긴 세션은 다음과 같은 문제를 유발할 수 있습니다.

  • 파일 서버에서 열려 있는 파일을 잠가 다른 사용자의 접근을 차단
  • 애플리케이션에서 데이터가 비정상적으로 저장되는 문제 발생
  • 로밍 프로필 폴더 또는 UPD(User Profile Disk)와의 충돌

quser 명령을 실행하면 각 사용자 RDP 세션의 시작 시간, 유휴(idle) 시간, 현재 세션 상태를 확인할 수 있습니다.

RDS 컬렉션 설정에서 세션 제한 구성

연결 끊긴 RDP/RDS 세션을 지정한 시간이 지나면 자동으로 종료되도록 하려면 세션 제한(타임아웃)을 적절히 설정해야 합니다.

RDS 서버를 운영 중이라면 RDS 컬렉션 설정의 세션(Session) 탭에서 세션 타임아웃 파라미터를 구성할 수 있습니다.

  • 끊긴 세션 종료(End a disconnected session): 연결 끊긴 원격 데스크톱 세션을 종료할 때까지의 시간을 지정합니다(기본값은 무제한 – Never).
  • 활성 세션 제한(Active session limit): 활성 세션의 최대 지속 시간을 설정합니다.
  • 유휴 세션 제한(Idle session limit): 사용자 입력이 없는 유휴 세션을 종료할 시간을 설정합니다.

이러한 하드 타임아웃은 해당 RDS 컬렉션의 모든 세션에 일괄 적용됩니다.

사용자 계정 속성에서 세션 제한 설정

로컬 사용자(lusrmgr.msc) 또는 도메인 사용자(dsa.msc, Active Directory 사용자 및 컴퓨터)의 계정 속성에서도 개별적으로 RDP 세션 제한을 설정할 수 있습니다.

단, 세션 타임아웃을 너무 짧게 설정하는 것은 권장하지 않습니다. 그럴 경우 사용자 세션이 잠시 비활성 상태가 되는 즉시 종료되어 작업 중인 내용을 잃을 수 있습니다.

그룹 정책(GPO)으로 RDP 세션 타임아웃 구성

Windows Server 2012 R2/2016/2019 환경에서는 그룹 정책을 통해 RDP 세션 타임아웃을 설정할 수 있습니다. 도메인 환경이라면 GPO 편집기(gpmc.msc)에서, 단일 서버라면 RDS 서버(또는 데스크톱 Windows를 터미널 서버로 사용하는 경우 해당 클라이언트)의 로컬 그룹 정책 편집기(gpedit.msc)에서 설정하세요.

RDP 세션 타임아웃 설정은 다음 GPO 경로에 위치합니다.

컴퓨터 구성 → 정책 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 서비스 → 원격 데스크톱 세션 호스트 → 세션 시간 제한(Session Time Limits)

주요 세션 시간 제한 정책

  • 연결 끊긴 세션에 대한 시간 제한 설정(Set time limit for disconnected session)
  • 활성 상태이지만 유휴 상태인 원격 데스크톱 서비스 세션에 대한 시간 제한 설정 — 마우스 이동, 키보드 입력 등 사용자 입력이 전혀 없는 유휴 RDP 세션을 자동으로 종료합니다.
  • 활성 원격 데스크톱 서비스 세션에 대한 시간 제한 설정 — 활성 세션을 포함한 모든 RDP 세션의 최대 지속 시간을 지정하며, 시간이 지나면 연결이 끊어집니다.
  • 시간 제한 도달 시 세션 종료(End Session when time limits are reached) — 시간 제한에 도달했을 때 세션을 연결 해제하는 대신 완전히 종료(로그오프)할 시간을 설정합니다.
  • RemoteApp 세션 로그오프에 대한 시간 제한 설정(Set time limit for logoff of RemoteApp sessions)

동일한 RDP 타임아웃 설정은 사용자 GPO 섹션(사용자 구성 → 관리 템플릿 → Windows 구성 요소)에서도 찾을 수 있습니다. 사용자 섹션의 정책을 활용하면 부서별·그룹별로 서로 다른 RDP 세션 길이 제한을 더 유연하게 적용할 수 있습니다.

기본적으로 이 정책들은 '구성되지 않음' 상태입니다. 예를 들어 연결 끊긴 RDP 사용자 세션을 8시간 후 자동 종료하려면 연결 끊긴 세션에 대한 시간 제한 설정 정책을 '사용'으로 설정하고 드롭다운 목록에서 8시간을 선택하면 됩니다.

설정을 저장한 후 RD 호스트에서 gpupdate /force 명령으로 그룹 정책을 갱신합니다. 새 타임아웃 설정은 새로 생성되는 RDP 세션에만 적용되므로, 기존 RDS 세션은 수동으로 종료해야 한다는 점에 유의하세요.

레지스트리로 세션 시간 제한 설정

그룹 정책 대신 레지스트리를 통해서도 RDP 세션 시간 제한을 설정할 수 있습니다. HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services 키의 다음 DWORD 값들이 위에서 설명한 정책들에 해당합니다.

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • RemoteAppLogoffTimeLimit

참고: Windows Server 2008 R2의 tsconfig.msc

Windows Server 2008 R2에서는 전용 콘솔인 tsconfig.msc(RD 세션 호스트 구성)를 통해서도 RDP 세션 타임아웃을 설정할 수 있었습니다. 콘솔을 연 후 RDP-Tcp 항목을 마우스 오른쪽 버튼으로 클릭하고 속성을 열면, 세션(Sessions) 탭에서 세션 제한을 구성할 수 있습니다.

다만 최신 Windows Server 버전에는 이 콘솔이 포함되어 있지 않습니다. 참고로 tsadmin.msc와 tsconfig.msc 파일을 수동으로 복사해 오면 최신 Windows Server에서도 이 콘솔들을 사용할 수 있습니다.