PSRemoting 활성화: 로컬 및 원격 기술

Windows에서는 PSRemoting이 기본적으로 활성화되어 있지만 항상 활성화되어 있지는 않습니다. PSRemoting이 활성화되어 있는지 확인하거나 Windows에서 PSRemoting을 활성화해야 하는 경우에는 이 튜토리얼을 참고하시기 바랍니다.

이 튜토리얼에서는 Windows를 실행하는 로컬 및 원격 컴퓨터에서 PSRemoting을 활성화하는 다양한 방법을 안내하겠습니다.

시작해보겠습니다!

PSRemoting 활성화는 많은 일을 수행합니다.

PowerShell Remoting에 대해 처음 알게 된다면, 활성화는 단일 명령어로 이루어진다고 생각할 수도 있습니다. 아마도 Enable-PSRemoting PowerShell cmdlet에 대한 참조를 보고 이를 실행하면 어딘가에서 비트가 전환된다고 생각할 수도 있습니다. 하지만 그것은 틀린 생각입니다.

PSRemoting을 활성화한다는 것은 배경에서 많은 작업이 이루어져야 합니다. PowerShell Remoting은 제대로 실행되기 위해 다른 시스템에 종속되어 있으며 몇 가지 종속성을 갖고 있습니다.

예를 들어, Windows에서 Enable-PSRemoting cmdlet을 매개변수 없이 실행하면 다음 작업을 수행합니다:

  1. WinRM 서비스가 시작되고 자동 시작으로 설정됩니다.
  2. 기본 WinRM 포트 5985에서 HTTP 트래픽을 위한 수신기를 생성합니다.
  3. WS-Management를 위한 방화벽 예외를 활성화합니다.
  4. PowerShell 세션 구성을 WS-Management에 등록합니다.
  5. PowerShell 세션 구성을 활성화합니다.
  6. 원격 액세스를 허용하도록 PowerShell 원격 세션을 설정합니다.
  7. 모든 변경 사항을 적용하기 위해 WinRM 서버를 다시 시작합니다.

이 모든 작업을 수동으로 수행하지 않아도 된다는 것이 다행이죠. 왜 Enable-PSRemoting cmdlet이 모든 작업을 처리하는지 설명하나요? 왜냐하면 동작하지 않는 경우가 있고 문제를 해결해야 할 때가 있기 때문입니다.

Windows의 기본 PSRemoting 설정

PSRemoting은 Windows에서 태어났으므로 기본적으로 활성화되어 있지만 모든 Windows 운영 체제 버전에 대해 일관되게 활성화되어 있는 것은 아닙니다.

모든 Windows 클라이언트 운영 체제에서 PSRemoting은 항상 비활성화되어 있습니다.

Windows Server에서는 PSRemoting이 가끔 활성화되어 있지만 Windows가 실행 중인 네트워크 프로필에 따라 항상 그렇지는 않습니다. Windows 운영 체제에서 PSRemoting이 활성화되어 있는지 여부를 확인하는 데 도움이 되는 표를 아래에서 찾을 수 있습니다.

Operating System Network Profile PSRemoting
Windows Server 2008 R2 Domain/Private Disabled
Windows Server 2008 R2 Public Disabled
Windows Server 2012 & Newer Domain/Private Enabled
Windows Server 2012 & Newer Public Enabled within the same subnet

그러나 Linux는 간단합니다. PSRemoting은 존재하지 않습니다! 심지어 PowerShell도 기본적으로 설치되지 않습니다. Linux에서 PSRemoting을 실행하려면 설정해야 합니다.

충분한 이론, 이제 실제로 PSRemoting을 사용하는 방법을 보여드리겠습니다!

사전 요구 사항

이 섹션의 예제를 따라하려면 다음 사항이 필요합니다:

  • A Windows Server 2008 R2 or later machine
  • A local or Active Directory domain user in the local administrators group

로컬에서 PSRemoting 활성화

내장 Enable-PSRemoting 명령을 사용하여 PSRemoting을 활성화하는 가장 쉬운 방법 중 하나입니다. 이 명령은 PowerShell Remoting을 수용하기 위해 여러 가지 서비스를 구성하는 바로 가기입니다.

Enable-PSRemoting Cmdlet 사용하기

이 명령을 매개변수 없이 실행하면 실행 중인 OS에 따라 다른 작업을 수행합니다. 현재 Windows OS에서는 동일한 기본 단계가 진행됩니다. PSRemoting이 활성화되고, WinRM HTTP 수신기가 생성되며, 방화벽 규칙이 활성화됩니다. 중요한 차이점은 공용 네트워크 처리 방식입니다.

Windows Server 2019와 같은 서버 OS에서는 공용 네트워크를 위한 방화벽 규칙이 동일 네트워크의 다른 장치에서의 원격 연결을 허용합니다. Windows 10과 같은 클라이언트 OS에서는 공용 네트워크임을 나타내는 오류가 표시됩니다.

Windows가 실행 중인 네트워크 프로필을 모르는 경우 다음 명령을 실행하세요:

Get-NetConnectionProfile

원격 연결을 수신하기 위해 웹 서버를 실행하는 것과 같은 이유로 PSRemoting은 신뢰할 수 있는 네트워크에서만 사용해야 합니다.

Get-NetConnectionProfile

개인 또는 도메인 이외의 네트워크 프로필에서 PSRemoting을 실행해도 괜찮은 경우 SkipNetworkProfileCheck 매개변수를 사용하여 네트워크 프로필 확인을 건너뛸 수 있습니다. 이 매개변수를 사용하면 Windows 방화벽에서 WinRM 포트가 열립니다.

Enable-PSRemoting -SkipNetworkProfileCheck

SkipNetworkProfileCheck 매개변수를 사용하면 현재 네트워크 프로필에서 PowerShell remoting을 위해 Windows 방화벽이 열리지만, 동일 서브넷의 기기에서만 원격 연결을 허용합니다.

Enable-PSRemoting 명령과 함께 사용할 수 있는 두 가지 매개 변수가 있습니다. 이들은 -Force-Confirm 매개 변수입니다. -Force를 사용하여 Enable-PSRemoting 명령을 실행할 때 일반적으로 발생하는 모든 프롬프트를 건너뛸 수 있습니다. 또한 -Confirm:$false를 사용하여 동일한 결과를 얻을 수도 있습니다.

winrm quickconfig 명령을 사용하는 방법

Enable-PSRemoting cmdlet이 생성되기 전에 winrm quickconfig 명령은 PSRemoting을 설정하는 인기있는 방법이었지만, 아직 그 자리를 유지하고 있습니다. winrm quickconfig만 실행하면 WinRM 서비스가 활성화되고 HTTP 수신기가 생성되며 방화벽 규칙이 활성화됩니다. 이러한 작업은 모두 Enable-PSRemoting에 의해 이미 수행되지만 이는 원격 PowerShell 세션을 처리할 수 있는 기능을 설정하지 않습니다.

winrm 명령이 유용한 이유는 HTTPS 수신기를 설정하는 데 있습니다. 수동으로 수행할 수도 있지만, HTTPS 수신기에 적절한 인증서가 있는 경우에는 winrm quickconfig -transport:https를 실행하면 HTTPS 수신기와 HTTPS 방화벽 규칙이 구성됩니다.

원격으로 PSRemoting 활성화하기

지금까지 로컬 컴퓨터에서 명령을 실행하여 PSRemoting을 활성화할 수 있다는 것을 배웠습니다. 이는 물음표와 달걀 상황으로 이어집니다. PSRemoting을 사용하여 원격 컴퓨터에서 명령을 실행할 수 있지만, PSRemoting 없이 원격으로 명령을 어떻게 실행할 수 있을까요?PSRemoting 없이

세 가지 방법; PSexec 유틸리티, WMI 및 그룹 정책.

Psexec를 사용하기

PSExec은 PSRemoting과 같은 원격 명령을 실행할 수 있는 편리한 유틸리티입니다. 그러나 PSexec은 다른 통신 방법을 사용하므로 이를 활용할 수 있습니다!

PSexec을 사용하면 다음 명령을 사용하여 로컬 컴퓨터에서 Enable-PSRemoting을 실행할 수 있습니다. 아래의 명령은 psexec을 호출하고 ServerB 서버에 연결합니다. 그런 다음 PowerShell 프로세스를 시작하고 -Force 스위치를 사용하여 일반적인 프롬프트를 건너뛰고 Enable-PSRemoting 명령을 실행합니다.

.\psexec.exe \ServerB -h -s powershell.exe Enable-PSRemoting -Force

이 옵션은 원격 시스템에서 PSRemoting을 활성화해야 하는 일회성 인스턴스에 유용하지만, 여러 시스템에서 PSRemoting을 활성화해야 하는 경우에는 효과적이지 않으며 psexec을 다운로드해야 합니다.

WMI 사용하기

때로는 PSexec이 작동하지 않을 수도 있습니다. 많은 보안 소프트웨어에서 psexec을 차단하지만 걱정하지 마세요. WMI도 사용할 수 있습니다!

PowerShell과 Invoke-CimMethod cmdlet을 사용합니다. Invoke-CimMethod cmdlet을 사용하여 PowerShell에게 DCOM을 통해 원격 컴퓨터에 연결하고 메서드를 호출하도록 지시할 수 있습니다.

운이 좋게도, WMI에는 프로세스를 호출할 수 있는 Win32_Process 클래스가 있습니다. Create 메서드를 Win32_Process에 대해 호출함으로써, Invoke-CimMethod은 원격 컴퓨터에 연결하고 PowerShell을 호출하여 아래와 같이 Enable-PSRemoting을 실행합니다.

다음은 서버 이름, 자격 증명 및 프로토콜이 지정된 세션 연결용 해시 테이블을 생성하는 예입니다. 그런 다음 다음 해시 테이블에서 Invoke-CimMethod의 매개변수를 설정하고 실행합니다. 이들이 실행되면 DCOM 프로토콜을 통해 CIM 세션이 생성되어 PowerShell 프로세스를 시작하고 다시 Enable-PSRemoting 명령을 실행합니다.

$SessionArgs = @{
     ComputerName  = 'ServerB'
     Credential    = Get-Credential
     SessionOption = New-CimSessionOption -Protocol Dcom
 }
 $MethodArgs = @{
     ClassName     = 'Win32_Process'
     MethodName    = 'Create'
     CimSession    = New-CimSession @SessionArgs
     Arguments     = @{
         CommandLine = "powershell Start-Process powershell -ArgumentList 'Enable-PSRemoting -Force'"
     }
 }
 Invoke-CimMethod @MethodArgs

도메인 환경에서 이를 사용하는 경우 명령을 실행하는 사용자가 대상 서버에 관리 권한이 있는 경우 Credential = Get-Credential 줄을 제외할 수 있습니다.

그룹 정책 사용

다양한 컴퓨터에 대해 WinRM을 활성화하는 가장 마지막이자 아마도 가장 좋은 옵션은 그룹 정책을 통해 진행됩니다. 그룹 정책을 사용하면 단일 그룹 정책 개체를 생성하고 한 번에 수천 개의 컴퓨터에 해당 정책을 적용할 수 있습니다.

그룹 정책을 사용하려면 모든 컴퓨터가 Active Directory 도메인에 있어야 합니다.

여러 컴퓨터에 동시에 WinRM을 활성화하려면 세 가지 다른 구성 항목을 설정해야 합니다:

  1. WinRM 서비스 활성화.
  2. WinRM을 위한 Windows 방화벽 포트 열기.
  3. WinRM 수신기 생성 및 해당 수신기에 연결 허용.

먼저, 도메인 컨트롤러에 RDP를 연결하거나 더 나은 방법으로 원격 서버 관리 도구 (RSAT) 패키지를 도메인에 가입된 워크스테이션에 설치하십시오. 이제 그룹 정책 관리 콘솔(GPMC)을 사용할 수 있어야 합니다.

WinRM 서비스 활성화

모든 대상 컴퓨터에서 WinRM 서비스를 활성화하려면:

  1. GPMC를 열고 GPO를 생성하십시오. 새롭게 생성된 GPO 내에서 컴퓨터 구성 —> Windows 설정 —> 보안 설정 —> 시스템 서비스로 이동하십시오.
  2. Windows 원격 관리 (WS-Management)를 선택하십시오.
  3. 설정 창에서 이 정책 설정을 정의 항목의 체크 박스를 선택하십시오.
  4. 자동의 라디오 버튼을 선택하여 WinRm 서비스가 부팅 시 자동으로 시작되도록 설정하십시오.
  5. 확인을 클릭하여 설정을 확인하십시오.

Windows 방화벽 포트 열기

다음으로, 모든 대상 컴퓨터에서 WinRM 포트를 열어야 합니다. 위에서 생성한 GPO 편집을 계속하면서:

  1. 컴퓨터 구성 —> Windows 설정 —> 보안 설정 —> 고급 보안이 있는 Windows Defender 방화벽으로 이동하십시오.

2. 새로운 인바운드 규칙을 생성하려면 새로운 인바운드 규칙을 클릭하세요.

3. 첫 번째 페이지에서 미리 정의된을 선택하고 아래에 표시된대로 Windows 원격 관리를 선택하세요.

Windows Remote Management

4. 다음 페이지에서 도메인/사설 네트워크 규칙에 대한 상자를 선택하세요. 공용 네트워크가 환경에서 사용되며 원격 연결을 허용해야 하는 경우를 제외하고는 선택하지 마십시오.

Domain/Private network rule

5. 다음 페이지에서 기본값인 연결 허용을 유지한 상태에서 규칙을 생성하려면 완료를 클릭하세요.

WinRM 수신기 및 필터 목록 생성

GPO에 추가해야 할 마지막 구성 항목은 WinRM 수신기를 생성하고 해당 WinRM 수신기로부터의 연결을 허용하는 것입니다. 이 설정은 HTTP에 대한 WinRM 수신기를 생성하고 지정된 IP 또는 IP 범위에서 해당 수신기로의 연결을 허용합니다.

WinRM GPO를 편집하는 동안:

  1. 컴퓨터 구성 -> 관리 템플릿 -> Windows 구성 요소 -> Windows 원격 관리 (WinRM) -> WinRM 서비스로 이동하세요.

2. WinRM을 통한 원격 서비스 관리 허용 설정에 대해 사용을 선택하세요.

3. WinRM을 통한 원격 서버 관리 허용 설정에서 아래에 표시된대로 IPv4 필터IPv6 필터에 별표(*)를 입력하세요.

모든 대상 컴퓨터에 연결할 호스트를 미리 알고 있다면 각 필터 목록에 쉼표로 구분하여 여러 호스트를 지정할 수 있습니다.

Allow remote server management through WinRM

4. 최신 GPO 설정을 확인하려면 확인을 클릭하세요.

GPO 적용

이제 GPO가 생성되어 사용할 준비가 되었습니다. 이제 해야 할 마지막 작업은 이 GPO를 WinRM을 활성화하려는 모든 대상 컴퓨터에 적용하는 것입니다. 이 튜토리얼에서는 GPO를 대상 컴퓨터에 할당하는 방법을 배우지 않습니다.

Active Directory에서 일련의 컴퓨터에 GPO를 할당하는 방법을 모르는 경우, 다음 기사를 확인해보세요.

다음 단계

이 튜토리얼에서는 다양한 방법으로 PSRemoting을 활성화하는 방법을 배웠습니다. PSRemoting을 활성화하는 방법은 환경에 따라 크게 달라질 것이며, 여기에서 여러분의 시나리오를 다루었기를 바랍니다.

이제 배운 내용을 활용하여 여러분의 환경에서 PSRemoting을 사용해보세요!

Source:
https://adamtheautomator.com/enable-psremoting/