원격지에 있는 Powershell 에 접속이 가능하다 정확히는 Session 을 만들수 있는데 이 Session을 이용하여 원격지에 있는 Powershell 과 상호작용이 가능한것이다.
자주쓰게 되는 기능인데 물어보는 분들이 많아 정리 해 둔다.
자세한 규칙이나 프로토콜, 원리등을 설명하면 20페이지정도 문서가 나올꺼 같지만 여기선 필요한 과정들에 대한 설명만 기록한다.
바쁜사람들은 아래를 보고 따라하자.
A 가 B 에 원격 접속 하고 싶을 때.
초간단 설정
정말 바쁘거나 세부내용을 알기 싫고 모르겠으면 A와 B 양쪽에 아래 명령을 입력하고 “사용하기” 로 넘어가자.
Enable-PSRemoting -Force Set-item WSMan:localhostClientTrustedHosts -Value * -Force
A 측에 할 작업
Enable-PSRemoting
Enable-PSRemoting
다음과 같은 셋팅을 한꺼번에 하려고 한단다.
1. WinRM 서비스 시작 또는 다시 시작(이미 시작된 경우) 2. WinRM 서비스 유형을 자동 시작으로 설정 3. 모든 IP 주소에 대한 요청을 허용하는 수신기 만들기 4. WS-Management 트래픽에 대한 방화벽 예외 사용(http 전용)
그뒤 SDDL 별로 Set-PSSessionConfiguration 을 수행 하면서 질문을 하는데, 필요한것 것들에 대해 Y를 눌려 수행한다. (잘 모르겠으면 A – Yes to All)
이해가 잘 안가거나 다 Yes 하고 싶으면 -Force 옵션을 붙히자.
Enable-PSRemoting -Force
A 와 B 에 모두 할 작업
WSMan:localhostClientTrustedHosts 설정
Powershell 원격제어를 하는 Protocol 은 상호간에 TrustedHost 가 설정 되어 있어야 한다.
다음 명령으로 현재 값을 확이해 보면 Value 가 공란으로 있을 것이다.
Get-Item WSMan:localhostClientTrustedHosts
이 값을 상대방의 ComputerName, IP, Domain 등으로 설정하면된다.
값은 ,로 구분해 Array로 넣을 수 있고 * 를 사용할 수 있다.
예를 들어.
모든 대상에 대해서 허용.
Set-item WSMan:localhostClientTrustedHosts -value *
컴퓨터 이름이 Alpha, Beta 인 두 대상을 허용.
Set-item WSMan:localhostClientTrustedHosts -value Alpha,Beta
IP 가 192.168.0.10 인 대상을 허용.
Set-item WSMan:localhostClientTrustedHosts -value 192.168.0.10
역시 잘 모르겠으면 다음을 입력하자.
Set-item WSMan:localhostClientTrustedHosts -value *
사용 하기
ssh 나 telnet 처럼 원격으로 접속하여 사용하길 원하면 다음 명령을 이용한다.
Enter-PSSession [대상]
명령하나를 원격지에 수행하고 싶다면 Invoke-Command 를 이용한다.
Invoke-Command -ComputerName [대상] -ScriptBlock {[수행할 명령, 스크립트]}
예
Invoke-Command -ComputerName talsu.net -ScriptBlock {Get-Process}
ComputerName 대신 미리 New-PSSession 명령을 이용해 Session 을 만들어 그것을 사용할 수도 있다. 말그대로 같은Session에서 수행 되기 때문에 연속적인 작업을 나누어 할수 있고 여러번 수행할때 속도도 빠르다.
$session = New-PSSession [대상] Invoke-Command -Session $session -ScriptBlock {[수행할 명령, 스크립트]}
예
$session = New-PSSession talsu.net Invoke-Command -Session $session -ScriptBlock {Get-Process}