서버 IP 주소가 변경된 후 RDS 클라이언트가 RD 세션 호스트 서버에 연결할 수 없음

이 문서에서는 RDS(원격 데스크톱 서비스) 클라이언트가 RD(원격 데스크톱) 세션 호스트 서버에 연결할 수 없는 문제에 대한 솔루션을 제공합니다.

적용 대상: Windows Server 2012 R2
원래 KB 번호: 2844958

중요

이 문서는 레지스트리 수정 방법에 대한 정보를 담고 있습니다. 레지스트리를 수정하기 전에 해당 레지스트리를 백업하는 것이 좋습니다. 문제가 발생하는 경우 레지스트리를 복원하는 방법을 알고 있어야 합니다. 레지스트리를 백업, 복원 및 수정하는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 문서를 확인합니다.
322756 Windows에서 레지스트리를 백업 및 복원하는 방법

증상

다음 시나리오를 고려합니다.

  • Windows Server 2012 RDS의 표준 배포를 설정합니다. 배포에는 RD 세션 호스트 서버, RD 연결 브로커 서버 및 RD 웹 액세스 서버가 포함됩니다.
  • RDS 클라이언트가 RD 웹 액세스 웹 사이트를 통해 액세스할 수 있는 세션 컬렉션을 만듭니다.
  • 세션 컬렉션에 있는 모든 RD 세션 호스트 서버의 IP 주소가 변경됩니다.

이 시나리오에서는 RDS 클라이언트가 세션 컬렉션에 연결할 수 없으며 연결 중에 다음 오류 메시지가 표시됩니다.

자격 증명이 작동하지 않았습니다.

원인

이 문제는 다음 하위 키의 사용되지 않는 레지스트리 항목으로 인해 발생합니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings

레지스트리 항목은 SessionDirectoryRedirectionIP RDS 배포를 만들 때 할당된 RD 세션 호스트 서버의 IP 주소를 저장합니다. RD 세션 호스트 서버의 IP 주소가 변경되었지만 RD 연결 브로커 설정의 IP 주소는 업데이트되지 않습니다. 따라서 RDS 클라이언트는 세션 컬렉션에 연결할 수 없습니다.

해결 방법

경고

레지스트리 편집기 또는 다른 방법을 사용하여 레지스트리를 잘못 수정하는 경우 심각한 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면 운영 체제를 다시 설치해야 할 수 있습니다. Microsoft에서는 이 문제의 해결을 보장하지 않습니다. 레지스트리를 수정하는 데 따르는 위험은 사용자가 부담해야 합니다.

이 문제를 resolve 세션 컬렉션의 각 RD 세션 호스트 서버에서 다음 레지스트리 하위 키의 레지스트리 항목을 삭제 SessionDirectoryRedirectionIP 합니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings

또는 다음 PowerShell 스크립트를 실행할 수 있습니다. 이 스크립트는 배포의 모든 RD 세션 호스트 서버에서 레지스트리 항목을 삭제합니다.

Import-Module RemoteDesktop

# Delete the Registry Key for all machine name specified in $RemoteMachine
Function DeleteRegistryKey($RemoteMachine)
{
 $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $RemoteMachine)

# connect to the needed key :  
 $regKey= $reg.OpenSubKey("System\\CurrentControlSet\\Control\\Terminal Server\\ClusterSettings", $true )

# and delete the SessionDirectoryRedirectionIP subkey, if it exists
 foreach ($key in $regKey.GetValueNames())
 { 
 if ($key -eq "SessionDirectoryRedirectionIP")
 {
 $regKey.DeleteValue($key)  
 Write-Host "Machine : "$RemoteMachine
 }
 }
}

# Get the list of collections on the machine
$RdSessionCollections = Get-RDSessionCollection  

if ($RdSessioncollections -eq $null)
{
 Write-Host "No RDSH Session Collections"
 return
}

foreach ($SessionCollection in $RdSessionCollections)
{
 Write-Host "Collection Name : " $SessionCollection.CollectionName

# get list of RDSH Servers in the collection
 $RdSessionHosts = Get-SessionHost -CollectionName $SessionCollection.CollectionName
 foreach ($SessionHost in $RdSessionHosts)
 {
 Write-Host "SessionHost : "$SessionHost.SessionHost

# Delete the regkey on this server
 DeleteRegistryKey($SessionHost.SessionHost)
 }
}