원격 리소스에 접근하려고 PowerShell 원격 세션을 사용해본 적이 있습니까? 그러나 접근 거부 오류로 인해 좌절감을 느낀 적이 있습니까? 이 흔한 문제는 “더블 홉” 문제로 알려져 있으며, 현재 세션에서 두 번째 원격 머신에 접근하는 것을 방지합니다.
좋은 소식은? 지나치게 복잡한 구성을 하지 않고도 더블 홉 문제를 해결할 수 있는 방법이 있습니다. 이 튜토리얼에서는 인증을 원활하게 처리하는 사용자 지정 세션을 구축하여 시간과 노력을 절약하면서도 보안을 유지하는 방법을 배우게 됩니다.
세션 구성을 통해 더블 홉을 극복하고 작업 흐름을 간소화하세요!
다른 사용자로 PowerShell 실행하기
원격 리소스에 연결하는 스크립트를 작업하고 있다면 더블 홉 문제를 만날 수 있습니다. 이 문제는 원격 연결의 첫 번째 홉을 넘어 자격 증명이 인증되지 않을 때 발생합니다.
예를 들어, UNC 경로를 사용하여 원격 컴퓨터의 하위 디렉토리를 계산하는 스크립트를 고려해 보세요:
(Get-ChildItem -Path \\SRV2\c$ -Directory).Count
리소스에 접근할 권한이 없는 사용자로 로그인한 경우, 다른 사용자 계정으로 PowerShell을 실행할 수 있습니다:
- 시작 메뉴에서 PowerShell을 검색하세요.
- PowerShell 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 파일 위치 열기를 선택하세요.
- 파일 탐색기에서 Shift 키를 누른 채 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 다른 사용자로 실행를 선택하세요.
- 필요한 권한이 있는 사용자의 자격 증명을 입력하세요.
다른 사용자로 PowerShell을 시작한 후 명령이 이제 성공해야 합니다:
(Get-ChildItem -Path \\SRV2\c$ -Directory).Count
팁: 다양한 자격 증명을 사용하여 명령을 자주 실행하는 경우, Start-Process
cmdlet과 -Credential
매개변수를 사용하는 것을 고려하세요. 이 방법을 사용하면 대체 자격 증명으로 콘솔에서 직접 새로운 PowerShell 세션을 열 수 있습니다.
원격 연결 테스트
여러 원격 시스템에서 작업할 때 공유 폴더와 같은 원격 리소스에 로컬로 성공적으로 액세스할 수 있습니다. 그러나 두 번째 원격 컴퓨터에서 실행할 때 동일한 명령이 “액세스 거부” 오류를 발생시키는 것을 발견했습니다.
이러한 불일치는 혼란스러울 수 있으며, 자격 증명이 충분한 권한을 가지고 있다고 확신할 때 더욱 그렇습니다.
원격 연결을 테스트하려면 다른 컴퓨터와 세션을 설정하세요:
Enter-PSSession -ComputerName SRV3
연결되면 두 번째 머신에서 동일한 명령을 실행해 보세요:
(Get-ChildItem -Path \\SRV2\c$ -Directory).Count
이 테스트는 권한이 있는 계정을 사용하더라도 종종 “액세스 거부” 오류를 발생시킵니다.
다음 명령으로 현재 사용자를 확인하세요:
whoami
이러한 동작(더블 홉)은 PowerShell이 다음 홉으로 자격 증명을 전달하지 않기 때문에 발생합니다. 이 메커니즘은 Kerberos 인증에 내장된 보안 기능이지만, 여러 시스템을 관리할 때 큰 골칫거리가 될 수 있습니다.
세션 구성으로 더블 홉 문제 해결
더블 홉 문제를 해결하는 한 가지 방법은 중간 머신에 세션 구성을 만드는 것입니다.
연결할 컴퓨터, 이 경우 SRV3에서 세션 구성을 등록하는 것으로 시작하세요.
다음 명령어:
- 세션 구성에
Name
을 할당합니다 (예:Admin
). - 계정(
RunAsCredential
)을 지정하여 세션이 실행될 것입니다. - 구성이 적용되도록 (
Force
) 보장하며 WinRM 서비스를 재시작합니다.
Invoke-Command -ComputerName SRV3 -ScriptBlock { Register-PSSessionConfiguration -Name Admin -RunAsCredential 'psforsysadmins.local\adam' -Force }
PowerShell은 원격 머신에 안전하게 저장된 RunAsCredential
계정의 비밀번호를 입력하라는 메시지를 표시합니다. 구성이 등록되면 WinRM 서비스가 재시작되고 세션이 종료됩니다.
구성이 완료되면 이제 ConfigurationName
매개변수를 사용하여 연결할 수 있습니다:
Invoke-Command -ComputerName SRV3 -ScriptBlock { (Get-ChildItem -Path \\SRV2\c$ -Directory).Count } -ConfigurationName Admin
이 명령은 이전과 동일한 작업을 수행합니다. 그러나 지정된 관리자 계정 아래에서 실행되는 Admin
세션 구성을 지정합니다.
팁: Set-PSSessionConfiguration
cmdlet을 사용하여 사용자 또는 그룹별 액세스 권한을 정의하여 세션 구성에 대한 액세스를 제한하십시오. 이를 통해 권한이 있는 사용자만 구성을 활용할 수 있습니다.
결론
이 가이드에서는 PowerShell 원격에서 더블 홉 문제를 확인하고 해결했습니다. 세션 구성을 설정하면 더블 홉 문제를 해결하고 자격 증명이 안전하게 전달되도록 할 수 있습니다.
이 솔루션은 지속적이므로 재부팅 후에도 구성을 재사용할 수 있어 원격 PowerShell 세션 관리를 위한 강력한 접근 방식이 됩니다. 이제 보안을 저해하지 않으면서 다중 홉 원격 작업을 자신 있게 관리하고 워크플로를 간소화할 수 있습니다.
여기서는 세션 액세스 제한 또는 인증서 기반 인증과 같은 고급 보안 옵션을 탐색해보는 것을 고려해보십시오. 이러한 향상된 기능을 통해 복잡한 환경을 유연하게 관리하면서 리모팅 설정을 더욱 강화할 수 있습니다.
Source:
https://adamtheautomator.com/powershell-double-hop-fix/