Windows 11 WSL2 이용한 SSH & RStudio Server 설치 및 내·외부에서 접속

Windows 11 내 WSL(Windows Subsystem for Linux)2 설치 후 이 WSL2에 다시 RStudio Server를 추가로 설치하고 내·외부에서 접속 가능하도록 하는 방법이다.

참고한 링크는 다음과 같으며 번호는 설치 순서 및 참고 순서로 이해하면 된다.

  1. 구글 검색: windows 11 wsl 설치
  2. Using RStudio Server in Windows WSL2
  3. WSL SSH 접속 세팅하기
  4. WSL2, 외부 네트워크와 연결하기
  5. wsl2를 이용시 localhost:port로 접근 오류
  6. 윈도우 10 WSL 자동 실행 방법
  7. [Windows] *.ps1 스크립트 실행하기

1, 2번 글 순서대로 설치 후 31, 4, 5번 글을 통해 아래와 같은 내용의 파워셀 스크립트 (확장자 .ps1) 파일을 원하는 폴더에 생성하되 본인은 wsl2-connect-external.ps1 이라 명명하고 생성했다.

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ) {
  $remoteport = $matches[0];
} else {
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
exit;
}

#[Ports]
#All the ports you want to forward separated by coma
$ports=@(8787,원하는PortNumber1,원하는PortNumber2,...);

#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";

#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";

for ( $i = 0; $i -lt $ports.length; $i++ ) {
  $port = $ports[$i];
  iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}

상기 파워셀 스크립트 파일 중 중요한 부분은 ‘원하는 PortNumber1, 원하는 PortNumber2초록색으로 명기한 부분이여 이곳에 설정하려는 Port Number를 기입한다.

6번 글을 참고해서 자동 실행 방법을 아래와 같이 적용한다.

    • ‘Windows Key + R’ 실행 창에서 ‘shell:startup’ 입력 후 ‘확인’

 

    • autostart_ubuntu.bat 파일 생성

 

  • ‘autostart_ubuntu.bat’ 파일을 열어 아래와 같이 입력 후 저장
    @echo off
    wsl -u root -- service ssh start
    wsl -u root -- rstudio-server start

마지막으로 7번 글을 참고하여 Windows 기동 시마다 실행되는 WSL2의 유동 IP를 Windows가 기동되는 PC의 IP2와 자동으로 연결되도록 wsl2-connect-external.ps1 파일을 Windows 11 기동 시마다 실행하기 위해 ‘작업 스케줄러‘에 등록하는 작업을 아래와 같이 해준다.

    • ‘Windows Key + R’ 실행 창에서 ‘taskschd.msc’ 입력 후 ‘확인’

 

    • 우상단 ‘작업 만들기…’ 클릭

 

    • ‘일반’ 탭 ‘이름(M)’에 원하는 이름 입력, 본인의 경우 Elevated powershell executable program 입력
    • 좌하단 ‘가장 높은 수준의 권한으로 실행(I)’ 체크
    • ‘구성 대상(C)’ 콤보박스에서 ‘Windows 10’ 선택 후 확인

 

    • ‘트리거’ 탭 선택 후 ‘새로 만들기(N)…’ 클릭
    • ‘작업 시작(G)’ 콤보박스에서 ‘로그온할 때’ 선택
    • ‘설정’ 영역에서 ‘특정 사용자(C)’ 선택 후 ‘확인’

 

    • ‘동작’ 탭 선택 후 ‘새로 만들기(N)…’ 클릭
    • ‘설정’ 영역 ‘프로그램/스크립트(P)’ 입력박스에 %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe 입력
    • ‘인수 추가(옵션)(A)’ 입력박스에 -noprofile -executionpolicy bypass -file D:\wsl2-connect-external.ps1 입력 후 ‘확인’

 

    • ‘조건’ 탭에서 ‘전원’ 부분 중 ‘컴퓨터의 AC 전원이 켜져 있는 경우에만 작업 시작(P)’ 체크 해제

 

  • ‘설정’ 탭에서 ‘다음 시간 이상 작업이 실행되면 중지(K)’ 체크 해제 후 ‘확인’

상기 작업까지 마치면 해야 할 작업은 다 끝난 셈이다. 마지막으로 재부팅하여 잘 작동하는지를 확인하면 되는데, 본인은 아래와 같이 외부에서 ssh 또는 RStudio Server 모두 잘 접속되는 것을 아래와 같이 확인할 수 있다.


※ 공유기 내 특정 PC와 연결하고 싶을 경우에는 공유기에서 Port Forwading 설정이 필요하다는 사실은 비밀!

Footnotes

  1. SSH 설치 시 참고
  2. 192.168.0.어쩌구

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.