Mac
RemoteDesktop
ubuntu16.04
ubuntu18.04

Ubuntu へ Chrome Remote Desktop を使ってMacからリモート接続

Ubuntu へ Chrome Remote Desktop を使ってMacからリモート接続

概要

リモートのLinux機にアクセスするのに、通常のSSH接続でもよいが、
画像を確認したい場合や、IPアドレスが変わり、トンネルを通すのが大変な場合でもリモート接続が可能で便利である。

▼Macからの接続画面
image.png

インストール

公式説明より抜粋

Chromeのインストール後に公式ページよりChrome リモートデスクトップをインストール。
Chrome リモートデスクトップ

image.png

64bit Debian パッケージのインストール

64bit Debian パッケージをこちらからダウンロード

.chrome-remote-desktop-session の作成

  1. /usr/share/xsessions/ で、ご使用のデスクトップ環境の .desktop ファイルを探します。 たとえば Cinnamon の場合は、「cinnamon.desktop」という名前のファイルがあり、次のコマンドが指定されています: gnome-session --session=cinnamon
  2. ホーム ディレクトリに .chrome-remote-desktop-session というファイルを作成し、次の内容を指定します。 exec /usr/sbin/lightdm-session "<YOUR_EXEC_COMMAND>"
  3. <YOUR_EXEC_COMMAND> の部分を、.desktop ファイルの末尾にあるコマンドに置き換えます。 Cinnamon の場合、正しいコマンドは次のようになります: exec /usr/sbin/lightdm-session 'gnome-session --session=cinnamon' 統一デスクトップの場合は追加のコードが必要です。コマンド全体は次のとおりです: DESKTOP_SESSION=ubuntu XDG_CURRENT_DESKTOP=Unity XDG_RUNTIME_DIR=/run/user/$(id -u) exec /usr/sbin/lightdm-session 'gnome-session --session=ubuntu'
  4. 「.chrome-remote-desktop-session」というファイルを保存します。 ```

Ubuntu 16.04では以下のようになっている。

$ cd /usr/share/xsessions
$ ls
ubuntu.desktop
$ cat ubuntu.desktop
[Desktop Entry]
Name=Ubuntu
Comment=This session logs you into Ubuntu
Exec=gnome-session --session=ubuntu
TryExec=unity
Icon=
Type=Application
DesktopNames=Unity
X-Ubuntu-Gettext-Domain=gnome-session-3.0

ホームディレクトリに.chrome-remote-desktop-sessionを作成する

$ vi ~/.chrome-remote-desktop-session
[以下の内容を記載]
exec /usr/sbin/lightdm-session 
DESKTOP_SESSION=ubuntu XDG_CURRENT_DESKTOP=Unity XDG_RUNTIME_DIR=/run/user/$(id -u) exec /usr/sbin/lightdm-session 'X-Ubuntu-Gettext-Domain=gnome-session-3.0'

リモート接続の許可

  1. パソコンで Chrome を開きます。
  2. 上部のアドレスバーに「chrome://apps」と入力し、Enter キーを押します。
  3. Chrome リモート デスクトップ Chrome リモート デスクトップ アプリ をクリックします。
    image.png

  4. [マイ コンピュータ] の [利用を開始] をクリックします。

  5. [リモート接続を有効にする] をクリックします。
    image.png

  6. PIN を入力し、同じ PIN を再入力して [OK] をクリックします。

  7. 確認ダイアログを閉じます。

トラブルシューティング

壁紙だけが表示される場合

⇢ desktop立ち上げ時の環境設定を変更することでうまく行きます。

他のパソコンから見た時にオフライン状態でリモート接続が選択できない。

⇢ 別な方法で設定を行い回避します。

# システムを停止し、立ち上げ時のスクリプトを編集します。
$ sudo systemctl stop chrome-remote-desktop.service

# 立ち上げスクリプトのバックアップを取ります。
$ cp sudo cp /opt/google/chrome-remote-desktop/chrome-remote-desktop /opt/google/chrome-remote-desktop/chrome-remote-desktop.org

# 環境変数の確認をします
$ echo $DISPLAY
[値を覚えておく]

立ち上げスクリプトを編集していきます。

$ sudo vi /opt/google/chrome-remote-desktop/chrome-remote-desktop
FIRST_X_DISPLAY_NUMBER = 20

↓ ここに、echo $DISPLAYの結果を入れて、現在のディスプレイがリモート接続で見れるようにします。

FIRST_X_DISPLAY_NUMBER = 0 # 先ほど覚えた値
  @staticmethod
  def get_unused_display_number():
    """Return a candidate display number for which there is currently no
    X Server lock file"""
    display = FIRST_X_DISPLAY_NUMBER
    while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
      display += 1
    return display

  @staticmethod
  def get_unused_display_number():
    """Return a candidate display number for which there is currently no
    X Server lock file"""
    display = FIRST_X_DISPLAY_NUMBER
    # while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
    #   display += 1
    return display
  def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    self._launch_x_server(x_args)
    self._launch_x_session()

↓ 新しくXセッションを立ち上げる代わりに、すでに立ち上がっているホスト側の画面を利用。

  def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    # self._launch_x_server(x_args)
    # self._launch_x_session()
    display = self.get_unused_display_number()
    self.child_env["DISPLAY"] = ":%d" % display

変更し終わったら再起動しましょう

$ sudo systemctl restart chrome-remote-desktop.service

以下のように接続ができれば成功です。
画面サイズなどは、先ほど編集したスクリプトを触ることで変更が可能です。
▼Macからの接続画面
image.png

参考

How to Install Chrome Remote Desktop on Ubuntu 18.04