PowerShell 원격 연결 설정하기

Category
Windows Server
Posted
2015-09-29 15:10
세월호 참사 1주기 결코 잊지 않겠습니다.

PowerShell로 원격 연결하기

여지껏 remote server(Windows server)에서 PowerShell을 사용하기 위해서 “원격 데스크톱 연결”을 이용해서 원격지에 접근한 뒤 remote server 상에서 PowerShell을 띄워 사용해 왔는데…
불편하기 그지 없어 이번 기회에 아예 PowerShell 자체에서 remote server로 접근하는 방법을 찾아서 설정해 봤다.

Remote Server 설정

우선 remote server에서 PowerShell을 이용한 접근을 허용하도록 설정이 필요하다.
remote server상에서 PowerShell을 열어 다음 명령어를 입력한다. (-Force 옵션은 사용자에게 승인 여부를 묻지 않고 자동으로 처리하도록 하는 설정이니 이 작업에 대해 직접 승인을 내리고 싶다면 -Force 옵션을 제외하고 명령어를 실행하면 된다.

Enable-PSRemoting -Force

상기 명령의 작업이 종료되었다면 이제는 외부 접근을 허용시키기 위해 방화벽 설정을 추가해주어야 한다. PowerShell은 5985, 5986번 포트를 사용하므로 이 포트들에 대해 인바운드를 열어주기만 하면 된다.

powershell 방화벽 설정 캡쳐 화면

이것으로 remote server에 대한 모든 설정은 끝났다. 이제 접속할 client에서의 설정을 해보자.

Client 설정

Client에서 먼저 설정할 것은 신뢰할 수 있는 호스트 목록에 remote server를 등록하는 일이다.
이를 위해 PowerShell을 열고 다음의 명령어를 실행하기만 하면 된다.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "remote server ip 혹은 remote server hostName" -Force

-Force 옵션을 설정해두면 WinRM 보안구성 변경 확인 여부에 대한 승인을 자동으로 처리하게 된다. 당연히 자동이 싫다면 빼고 실행시키면 된다.

만일, 여러 개의 IP 혹은 hostName을 등록해두고 싶다면 다음 예제 코드와 같이 -Value 옵션에 해당하는 값에 콤마(,)로 구분하여 넣어두면 된다.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "server1 ip, server2 ip, server3 ip" -Force

이렇게 하면 PowerShell로 원격 접속을 학 위한 기본적인 설정은 끝이 난다.
이제 끝으로 원격지에 접근하기 위해 다음 명령어를 사용하기만 하면 된다.

Enter-PSSession -ComputerName "remote server ip or hostName" -Credential "userName"

위와 같이 명령을 주면 이제 remote server로 접근하기 위한 자격 증명을 물어보는 대화상자가 나타나게 되고, 암호를 입력하고나면 remote server에 접속 된 것을 확인 할 수 있다.

이제, Client PowerShell에서 remote server로 명령을 줄 수 있게 되었다!! ㅎ

powershell remote에서 npm 설치 명령 실행 결과 캡쳐화면

Session 종료하기

remote에서의 작업이 완료 되었다면, 이제 session을 종료해야 하는데 종료를 위한 명령은 매우 쉽다.
Enter로 들어갔으니 Exit로 나오면 되는… =ㅁ=a

Exit-PSSession

단지 이 명령을 주는 것만으로 끝난다.

Authored By 멀더끙