개요
Window가 설치된 PC에 어떤 Third Party 설치 없이 명령을 내려 동작을 하게 만들고 그 결과를 응답 받을 수 있는 게 필요했다. 셋팅하면서 모르는 개념들이 튀어나왔는데 WinRM 셋팅만을 목적으로 두고 시도했던 내용을 담으려고 한다.
WinRM이란?
WinRM은 Windows Remote Management의 약자로 WS-Management Protocol을 기반으로 Windows 서버를 원격에서 접근하고 제어할 수 있는 방법을 제공한다. 기본 Port로 http를 사용할 경우 5985를 https를 사용할 경우 5986 포트를 이용해 접근할 수 있다.
링크에따르면 WinRM은 모든 버전의 Windows 운영 체제와 함께 자동으로 설치된다고 한다. WinRM 이용에 필요한 정보는 첨부한 링크에서 자세하게 읽어보도록 하자.
Setting
Documet나 구글링을 했을 때 WinRM을 설정하는 가장 빠른 명령어는 아래와 같다.
winrm quickconfig
PowerShell을 관리자 권한으로 실행시킨 후 입력하도록 하자. 아마 다음과 같은 Message가 뜰 것이다.
winrm set winrm/config/service/Auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
여기서 나오는 메시지를 읽어보면 “네트워크 연결 형식 중 하나가 공용으로 설정되어 ~”라는 문구가 나오는데 이는 네트워크 프로필 설정을 공용에서 개인으로 설정하면 해결된다. 하지만 원격(RDP)으로 작업 중이라면 무시하고 넘어가자 RDP가 끊어지고 RDP로 다시 접근이 안될 수 있다
이후 원격으로 접속하기 위해 필요한 추가로 입력해줘야 하는 명령어는 다음과 같다
# Trusted Hosts를 All로 설정
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
# 방화벽 허용 해주기
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
# TrustedHosts에 모든 컴퓨터 추가
Set-Item wsman:\localhost\Client\TrustedHosts -value *
문제는 여기까지 Server, 즉 접속하려는 대상 PC에서 위와 같은 명령을 수행해야 했지만 클라이언트(접속하는 PC 또는 원격으로 명령을 내리고 싶은 PC)에서 똑같은 작업이 필요하다. 상호 신뢰하는 컴퓨터라는 설정을 양 측에 다해줘야 한다.
접속 계정 설정
# 계정 설정 창 실행
winrm configSDDL default
WinRS: Remote Command!
winrs /r:http://IP:5985/wsman /u:USERNAME /p:PASSWORD CMD_COMMAND
기타
winrs로 명령을 내려 프로그램 실행은 정상적으로 실행되었는데 거의 백그라운드로 돌아간다. 계산기 같은 경우에는 winrs로 돌리면 GUI가 나오는 반면 다른 프로그램은 그러지 않았는데 무슨 원리인지 모르겠다.
안녕하세요 jako입니다.
해당 글을 통해 유용한 정보를 얻으셨길 바랍니다.
경험과 지식의 공유를 통해 조금 더 양질의 정보를 생성하기위한 뉴스레터를 만들었습니다.
블로그에는 기재되지 않을 유용한 정보 또한 뉴스레터에 담아 발행하고자합니다.
이 링크를 클릭하여 뉴스레터를 구독해주세요.
양질의 정보와 함께 찾아뵙겠습니다.
'ETC > Window' 카테고리의 다른 글
collect2.exe ?? (0) | 2020.10.01 |
---|