아이패드 프로로 집에 있는 맥을 통해 다른 PC를 WOL로 켜기(feat. 단축어, a-shell)

어제 아이패드 프로에서 Claude를 쓰는 방법을 포스팅하던 중 아이패드로 맥에 ssh를 통해 접근할 수 있다면 외부에서 WOL도 명령어를 통해 실행할 수 있지 않을까 하는 생각이 들었습니다.

최근에 WOL 삽질기를 올리기도 했지만, WOL 세팅이 생각보다 간단하지는 않았습니다. WOL을 하려면 내부 네트워크에 접속한 상태에서만 가능하기 때문에 Moonlight 같은 앱도 네트워크 내에서는 동작하지만 외부 네트워크에서는 동작하지 않거든요. 그래서 iptime 공유기 같은 경우도 공유기 원격 관리 포트를 열어야만 외부에서 WOL을 사용할 수 있습니다.

하지만 아이패드에서 ssh를 통해 내부 네트워크에 접속한 맥에서 WOL 신호를 날릴 수 있다면, 그것도 a-shell 앱을 통해 실행할 수 있다면, 어쩌면 단축어로 WOL을 쉽게 실행할 수도 있지 않을까요?

일단 외부 네트워크에서 아이패드를 통해 맥의 ssh에 접근할 수 있도록 해야합니다. 해당 세팅은 어제 올린 글을 참고해주세요.

참고로 이 글에서 준비물은 항상 켜져있는 맥(연결은 무선이어도 관계 없음)이 필요합니다.(리눅스 기반의 서버일 경우 명령어에 약간 차이가 있을 수 있습니다.) 저 같은 경우 아이맥을 이용해 윈도우 게이밍 PC를 켜는 세팅을 하고자 합니다.

WOL 실행 환경 세팅

일단 맥(서버) 쪽에서 WOL을 할 수 있도록 세팅해줘야 합니다. 명령어 wakeonlan을 통해 WOL을 실행할 수 있는데 최근 맥OS에는 설치되어있지 않습니다. 쉽게 설치하려면 맥용 패키지 관리자 homebrew를 먼저 설치해주는게 좋습니다.

curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)

맥 터미널에서(또는 ssh로 접속한 상태에서) 위 명령을 실행해 homebrew를 설치해줍니다.

그 다음 아래 명령어를 이용해 wakeonlan을 설치합니다.

brew install wakeonlan

brew 실행시 명령어 오류가 나는 경우, 환경 변수 설정이 필요한 상태이긴 하나, brew 경로를 지정해서 실행해도 됩니다.

/usr/local/bin/brew install wakeonlan

또는

/opt/homebrew/bin/brew install wakeonlan

WOL 테스트

wakeonlan이 설치되었으면 한번 테스트해봅니다. wakeonlan으로 켜고자 하는 PC LAN 카드의 MAC 주소를 입력해 켤 수 있습니다.

wakeonlan AA:BB:CC:DD:EE:FF

MAC 주소는 공유기에서 확인하거나 윈도우의 경우 ipconfig, 맥의 경우 ifconfig 명령을 통해 확인하실 수 있습니다.

PC가 내부 네트워크에 위치해있다면 위 명령만 실행해도 잘 켜지는걸 확인할 수 있습니다. 잘 실행되면 그 다음 단계로 넘어갑니다.

아이패드 프로에서 맥에 접속해 wakeonlan 실행하기

이제 a-shell로 돌아와서 맥에 ssh로 접속합니다. 그 다음 위에서 했던 것과 동일하게 아래 명령을 입력해 테스트해봅니다.

wakeonlan AA:BB:CC:DD:EE:FF

마찬가지로 잘 실행되면 여기까지만 해도 아이패드로 외부에서 접속해서 내부 네트워크에 있는 PC를 켤 수 있습니다.

하지만 여기까지 진행했을 때 문제는 ssh에 접속할 때 입력하는 로그인 암호입니다. 단축어로 자동화를 만들어도 원격 환경에 접속시 암호가 필요하기 때문에 깔끔하게 자동화되지 않는거죠.

아이패드에 로컬 키를 만들어서 ssh 환경에 암호 없이 자동 인증되도록 만들면 좀 더 깔끔하게 만들 수 있을 것 같습니다.

자동화를 위해 ssh 자동 인증하기

a-shell 에서는 ssh와 관련한 명령어를 충실히 지원하는 편입니다. 그래서 맥 환경에서 할 수 있는 명령을 똑같이 쓸 수 있습니다.

a-shell을 실행하여 (ssh에 접속한 상태가 아닌 아이패드 자체에서) 아래 명령어를 실행하여 키를 생성합니다.

ssh-keygen -t ed25519

몇가지 질문이 나오는데 그냥 엔터를 눌러서 기본값을 사용하도록 세팅합니다.

그 다음 아래 명령어를 실행하여 해당 키를 ssh 환경에 등록합니다.(user와 IP에는 ssh에 접속할 때 사용하는 환경을 입력합니다.)

ssh-copy-id user@192.168.0.10

만약 외부 환경에서 접속한다면, 외부 IP(또는 DDNS)에 포트를 따로 지정해서 쓰는 경우가 있는데, 포트를 기본값이 아니라 따로 지정했다면 아래처럼 포트를 지정해줄 수 있습니다.(예시는 기본 값인 22번 포트를 예로 들었습니다.)

ssh-copy-id user@userid.iptime.org -p 22

이때 ssh에 접속할 때 사용하는 비밀번호를 물어봅니다. 이때 한번 등록해주면 이후에는 아이패드 로컬에 있는 키를 사용해 자동으로 인증됩니다.

설정이 완료되었으면 아래 명령어를 사용해 ssh로 로그인해봅니다. 비밀번호를 물어보지 않으면 성공입니다.

ssh user@192.168.0.10

또는

ssh user@userid.iptime.org -p 22

단축어 등록하기

이제 단축어를 등록할 차례입니다. a-shell은 단축어를 통해 터미널을 실행하지 않고도 명령을 실행할 수 있습니다.

단축어 앱에서 새로운 단축어를 추가한 뒤, a-shell을 검색합니다.

a-shell 액션 중 “명령 실행” 액션을 추가합니다.

“명령 실행” 액션을 추가하면 위와 같이 추가됩니다. 쉘 명령 부분에 실행할 명령을 추가해주면 됩니다.

ssh 에 접속하지 않은 상태로 원격 환경에서 원하는 명령을 바로 실행하려면 ssh 명령 뒤에 붙여주면 됩니다. 예를 들어 아래처럼요.

ssh user@192.168.0.10 “wakeonlan AA:BB:CC:DD:EE:FF”

또는

ssh user@userid.iptime.org -p 22 “wakeonlan AA:BB:CC:DD:EE:FF”

해당 명령어를 그대로 쉘 명령에 추가하면 됩니다.

단축어를 실행할 때 a-shell을 실행하지 않고 백그라운드에서 실행하려면 다음과 같이 설정을 확장해서 설정해주면 됩니다.

이렇게 세팅하면 이후부터는 터미널 없이 단축어를 그냥 실행만해도 외부에서 컴퓨터를 켤 수 있습니다. 단축어를 “컴퓨터 켜줘” 같이 설정해놓으면 시리에게 “컴퓨터 켜줘”라는 명령만 해도 집에 있는 컴퓨터를 쉽게 켤 수 있습니다.

저 같은 경우 위젯으로 등록해놓고 터치로 실행하도록 세팅해놨습니다.

마무리

이 포스팅은 참고로 제가 다음에 잊어먹지 않기 위해 하는 정리용 포스팅입니다. 우분투를 한창 쓸 때는 이런 목적의 포스팅을 많이했는데, 아이패드 관련 포스팅을 하면서도 이렇게 터미널 명령어를 많이 쓰게 될 줄은 몰랐네요.

뭔가 항상 켜져있는 홈 서버와 ssh, a-shell이 결합되니 상당히 많은게 가능해질 것 같은 느낌입니다. 물론 아이패드 프로를 이렇게까지 써야 하나 싶어지기도 하지만, 원래 이 블로그의 아이패드 포스팅의 컨셉은 아이패드로 어디까지 가능한가를 보는거니까요.

혹시 이 조합으로 가능한 다른 아이디어가 떠오르면 한번 더 포스팅해보겠습니다.