외부에서 집에 있는 Chromecast 연결을 위한 Chrome 원격 데스크톱 설정.

제목이 제대로 써 진 건가. 어째 나이가 먹어갈 수록 글 쓰는게 점점 더 어려워질까.

이 모든 삽질(살짝 꽃삽질의 범주를 넘어섰다)은, 기기 조작이 어려우신 어머니를 위해, 외부에서도 넷플릭스/유튜브를 틀어들이기 위해 시작됐다. (아.. 얼마나 효자인가.)

어머니께서 이런 일을 척척해주시면 좋겠지만, TV 의 외부입력 전환 정도가 한계인지라, 내가 집에 없을 때, 어떻게 이런 것들을 TV 로 보게 해드릴 수 있을까에 대해 생각해봤다.
처음엔 안드로이드 기기로 직접 접속을 해서 거기에서 조작을 하는 법을 생각했는데, 이게 그다지 쉽지가 않고, 집에 있는 기기를 조작해서 수신 상태로 만들어놔야 하는 번거로움이 있었다.
해당 방법을 사용하려면 TeamViewer, RemoDroid 등을 사용해야 하는데, 어느 하나 딱! 이거다! 하는게 없었다.

그 다음에 생각한게 서버를 이용하는 방법. 서버는 계속 돌고 있고, 꺼져있더라도 WOL 을 통해 필요하면 켤 수도 있다. 또, 때때로 GUI 를 사용하기 위해 DE 도 설치되어 있으므로, 이를 통해 구글 크롬을 실행한 뒤, 거기에서 원하는 조작을 해주면 될 듯 했다.

그래서 시행해본 첫번째 도전. 바로 VNC. 그러나 실패. 우여곡절 끝에 VNC 연결엔 성공을 했지만, 그렇게 연결된 VNC 에선 크롬 캐스트를 찾질 못했다. 왜 그런지 짐작도 가지 않는다. 뭔가 네트웍과 관련한 깊은(?) 속사정이 있는 듯.

그 다음에 눈에 들어온 방법은 RDP 였는데, 어쩐지 MS 기술이라 그리 확 땡기지 않았다. 그리고 찾은 대안이 Google 의 Remote Desktop 이니.. 99보 100보, 도긴개긴이랄까.

막연하게 검색을 해보면, 구글 원격 데스크톱을 쓰는 방법에 대해 이런 저런 방법들이 많이 나온다. 그런데, 그 대부분이 다소 예전 방법이고, 왜 그리 해야하는지에 대한 설명은 빠진게 많다. 게다가 지금은 굳이 하지 않아도 되는 작업도 있었다.

하여, 더 찾다보니 구글 클라우드에 올라있는 설명서가 눈에 들어왔고, 그 문서를 기본으로 사용법을 정리했다.


살짝 헷갈리는게, 어떤 작업은 서버에서 해야하고, 어떤 작업은 로컬에서 해야 한다. 구분을 잘해야 엉뚱한 실수를 하지 않게 된다.

가장 크고, 당연한 전제가 하나 있는데, ‘서버’로는 ssh 접속이 가능한 상황이어야만 한다.

서버 설정 #1

서버에 DE(Desktop Environment)가 전혀 설치되어 있지 않다면, DE 를 먼저 설치해줘야 한다.
DE 로는 Xfce4 를 선택했다.

sudo DEBIAN_FRONTEND=noninteractive apt install --assume-yes xfce4 desktop-base

DEBIAN_FRONTEND 에 대해서는 nixCraft 문서 참고. 간단하게 얘기하면, 아무 것도 묻지 말고 그냥 설치하라는 뜻이 된다. (확실하겐 모르겠다.)

크롬 원격 데스크톱에서 Xfce 를 사용하게끔 설정해준다.

sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/xfce4-session" > /etc/chrome-remote-desktop-session'

구글 클라우드 문서에서 설치하라고 되어 있는 xscreensaver 는, 우분투 18.04 에선 이미 설치가 되어 있다.

또, lightdm 을 disable 하라고 하지만, 이것은 반대로 설치가 되어 있지 않기 때문에, disable 할 수도 없다.

마지막으로, 구글 크롬 브라우저를 설치한다.

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install google-chrome-stable_current_amd64.deb

이제 서버에서 GUI 를 돌릴 수 있는 환경이 완성됐다.

로컬(내 손에 있는 PC) 설정 #1

나중에 접속은 휴대기기(안드로이드/iOS)에서도 가능하지만, 설정은 PC 가 편하므로 PC의 크롬 브라우저에서 시행한다.

구글 크롬을 열고, 다음 주소로 이동한다.

https://remotedesktop.google.com/headless

여기서 ‘다른 컴퓨터 설정’ 이라는 항목이 보인다. ‘다른 컴퓨터’는, ‘서버’를 말한다.
‘시작’을 누른다.

이제, 먼저 서버에 ‘크롬 원격 데스크톱 기능’을 가능하게 해주는 프로그램을 설치해야 한다.
다음 프로그램을 받아야 하는데, 이건 현 컴퓨터(로컬)이 아닌 서버에서 받은 후 설치해야 한다.

서버 설정 #2

서버로 ssh 접속을 한 뒤, 파일을 받고 설치한다.

wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
sudo dpkg -i chrome-remote-desktop_current_amd64.deb
sudo apt install -f

설치가 끝났으면, 다시 로컬로.

로컬(내 손에 있는 PC) 설정 #2

‘승인’을 누르면, 구글 계정으로 로그인하는 창이 뜬다. 원하는 ID 로 로그인한다.
그 결과, 다음과 비슷한 화면이 나온다. (굳이 안보이게 처리를 할 필요가 있는지는..?)

아무튼, 다음과 유사한 명령어가 나오는데, 이걸 서버에서 실행해야 한다.

서버 설정 #3

위 명령을 복사하여 서버에서 실행한다.

$ DISPLAY= /opt/google/chrome-remote-desktop/start-host --code="4/xxxxxxxxxxxxxx" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=$(hostname)
Enter a PIN of at least six digits: 
Enter the same PIN again: 
~~~~ 어쩌고 저쩌고 ~~~~

위 코드는 몇 분간만 유효하므로, 가능한한 빨리 서버에서 실행해야지, 안 그러면 작업을 다시 해야 한다.
위 내용처럼, 저 명령을 넣으면 (나중에 접속할 때 필요한) PIN 을 묻는다. 적절히 입력하고 나면 모든 설정은 끝이 난다.


이제, 접속을 하려고 하는 컴퓨터(또는 휴대기기)에서, https://remotedesktop.google.com/ 으로 이동한다. 안드로이드/iOS 용으로는 전용 프로그램이 따로 있고, 구글 크롬 브라우저로는 확장프로그램(근데 그냥 PWA 다.)도 있다.

이제 접속하고자 하는 컴퓨터를 선택하고, PIN을 입력하라는 문구가 뜨면 아까 설정한 비밀번호를 넣어주면 된다.

서버 데스크탑 설정(원격 데스크톱 환경 개선)

이 부분은 원문을 따라하는게 더 좋겠다. (난 굳이 이 설정을 해놓을 필요가 없어서 하지 않았다.)

그리고 마지막 하나 더.

서버 설정 마지막.

그냥 이대로 놔둬도 별 무리는 없다.

나는, 이 서비스를 그리 자주 이용할 계획은 없다. 가끔만 사용할 생각인데, 그를 위해 원격이 언제나 가능하도록 해놓을 필요가 있나?? 하는 생각이 들었다. 해킹의 가능성은 크지 않다고 보지만, 그래도 여지는 남겨두지 않는 편이 좋지 않을까?

따라서, chrome-remote-desktop.service 를 자동으로 시작하지 않게끔 설정한다.

sudo systemctl disable chrome-remote-desktop.service
chrome-remote-desktop.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable chrome-remote-desktop

이러고 나서 재부팅하면, chrome-remote-desktop.service 는 자동 실행되지 않는다.

sudo systemctl status chrome-remote-desktop.service 
● chrome-remote-desktop.service - LSB: Chrome Remote Desktop service
   Loaded: loaded (/etc/init.d/chrome-remote-desktop; generated)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

당연히, 이 상태에서는 원격 접속이 불가능하다.

접속을 하고 싶다면, ssh 로 먼저 접근한 뒤, 서비스를 수동으로 실행시켜준다.

sudo systemctl start chrome-remote-desktop.service

끝!

이제 접속하여 크롬 브라우저를 열고, 넷플리스든, 유튜브등 열고, Chromecast 로 날려주는 일만 남았다.
아아~~ 구글에 종속된 내 인생이여..

Author: 아무도안

6 thoughts on “외부에서 집에 있는 Chromecast 연결을 위한 Chrome 원격 데스크톱 설정.

  1. 안녕하세요. 포스팅 잘 봤습니다.

    저도 이번에 구매한 크롬캐스트4 원격제어를 위해 알아보던 중인데, 포스팅 내용이 제가 원하는 내용인것 같아서요. 다만 내용이 잘 와닿지 않아 질문드립니다.

    말씀하신 ‘서버’와 ‘로컬pc’의 의미에 대해 설명해주실수 있나요?
    크롬캐스트가 서버가 되고 제 랩탑이 로컬pc가 되는거라고 생각했는데,
    포스팅 내용을 다시 보다보니 별도의 서버가 필요하다는 생각이 들기도 하고 좀 헷갈리네요.

    1. 안녕하세요.
      일단, 여기에 있는 모든 글들은 제 자신을 위하여 썼기 때문에, 다른 사람이 보기에는 이해가 안되는 내용이 많이 있을겁니다.

      외부에서, 다시 말해 같은 IP 대역이 아닌 곳에서는 크롬캐스트를 연결할 수가 없습니다. 오직 같은 IP 대역에 있을 때만 크롬캐스트를 연결할 수 있습니다.
      VPN 을 사용하여 내부 네트웍으로 접속하더라도, 적어도 제가 사용한 Wireguard 로는 크롬캐스트에 접근할 수가 없었습니다.

      따라서 위와 같은 방법을 생각했습니다.
      예를 들어, 크롬캐스트의 IP 가 192.168.0.50(255.255.255.0) 이라고 한다면, 외부에서 어떻게든 이 내부 네트웍과 같은 IP 대역을 갖게끔 접근해줘야 크롬캐스트를 쓸 수 있습니다. 허나, 이런 방법을 찾지 못했기에, 외부 네트웍에 있는 기기(위의 로컬 기기)를 내부에 있는 PC(위에서 말한 서버, 192.168.0.60 으로 가정)로 ‘크롬 원격 데스크탑 접속’을 하고, 그 결과 내부 PC에서 크롬캐스트를 작동하도록 하는, 다소 복잡한 방법을 생각해봤습니다. 확실히 작동은 합니다. 조금 번거로운게 문제죠.

      설명이 충분했을지 모르겠군요.

      1. 안녕하세요. 답변감사합니다.
        네, 설명충분하고 말씀하신거 이해했습니다.
        vpn으로도 외부접근이 안되는거였군요.
        저도 말씀하신대로 중계서버 두는 방식으로 진행해보겠습니다.
        같은 고민하시는 분을 뵈니 반갑고, 해결책도 알려주신거나 다름없네요. 다시한번 감사드리고 어려운 시기 잘 이겨내시길 빌겠습니다.

        1. 별 말씀을요.
          뭐 대단한 것도 아닌데.. 게다가 저 방법이 정말 ‘정답’에 가까운 지도 모르겠네요. ㅎㅎ
          혹시나 더 괜찮은 해법을 찾으시면 제게도 알려주시면 좋겠습니다.
          또, IPTime 공유기에서 제공하는 VPN 을 사용하면 될 지도 모르겠습니다. 그 방식은 VPN 으로 접속한 기기에 내부 IP 를 할당하는 식이었던 듯 한데, 제가 이 글을 쓰던 시점쯤부터 IPTime 공유기를 사용하지 않아서 확신은 못하겠습니다.

          제 기억으로는, IPTime 방식을 시험은 해봤던 듯도 하고.. 아무튼 VPN 으로 내부 IP 에 참가하는 방식에 대해 한참 찾아봤는데 결국 못찾았기 때문에 저런 방식을 생각해봤었습니다.

          아무튼 성공하시기 바라고!
          건강!! 뭣보다 최고죠!

  2. 설명감사합니다.
    한가지.
    원격연결시 접속되었다는 메시지를 안나오게 할 수있나요?

안녕하세요. 글 남겨주셔서 고맙습니다.