23
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Chrome リモートデスクトップ on Ubuntu

Chrome リモートデスクトップとは

Windows/Mac/Linux対応のクロスプラットフォーム型リモートデスクトップ接続サービス。
従来はChromeアプリとして公開されていたが、2019年6月にはWeb版が公開され、FirefoxのようなChrome以外のブラウザでも対応可能になった。
利用するためには、Googleアカウントが必要になる。

ホスト端末設定(リモート接続される側)

  1. 下記URLにアクセスし、上部ヘッダーの「リモートアクセス」を選択。
    https://remotedesktop.google.com/

  2. 「リモートアクセスの設定」と出るため、「オンにする」をクリック。
    ※ Ubuntuの場合、初回は指示に従いchrome-remote-desktop_current_amd64.debをインストールする。

  3. 「名前の選択」は、接続するホスト名がデフォルトで付けられるが、任意で変更できる。

  4. 「PINの入力」は、リモート接続するための認証番号。6桁以上の数字を設定する。

  5. 「起動」を押してしばらく待つと、ステータスが「オンライン」となり、外部から接続可能状態になる。

ゲスト端末設定(リモート接続する側)

  1. ホスト設定に利用したGoogleアカウントでリモートデスクトップのURLにアクセスすると、先ほど設定したデバイスが表示される。
  2. 設定したPINを入力すると、リモートデスクトップ接続が開始される。

Ubuntu端末にリモート接続すると壁紙しか表示されない場合

まずはリモートアクセス設定画面から、ゴミ箱アイコンの「リモート接続を無効にする」を選択。
もしくはコマンドから停止させることも可能。
/opt/google/chrome-remote-desktop/chrome-remote-desktop --stop

設定ファイルは/opt/google/chrome-remote-desktop/chrome-remote-desktopであり、必要に応じてバックアップを取っておく。

1. FIRST_X_DISPLAY_NUMBERの変更

Linuxには「X Window System」というGUIの基盤を提供する技術があり、アプリケーションをどのディスプレイに表示させるかを設定するDISPLAY環境変数がある(ここで言うディスプレイは物理的なモニタのことではない)。
Ubuntuホスト端末で以下のコマンドを打てば確認できる。

echo $DISPLAY
:0 // 出力結果 DISPLAY=(ホスト):(ディスプレイ).(スクリーン)

この場合、ホスト名が省略されているため、localhostの0番ディスプレイと解釈される。

設定ファイルのデフォルトでは使用するX_DISPLAY初期値が20になっているが、上記の結果から0番に変更する必要がある。
FIRST_X_DISPLAY_NUMBER = 20

FIRST_X_DISPLAY_NUMBER = 0

2. get_unused_display_number()の修正

while文の箇所は操作を受け付けないディスプレイをパスする(使えるディスプレイを特定する)部分であり、ディスプレイ番号は先ほど指定したため、コメントアウトする。

@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

3. launch_sessionの修正

使用するホスト画面を明示するように修正

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()

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

設定を保存したら、ホスト端末からリモートアクセスを再度立ち上げる。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
23
Help us understand the problem. What are the problem?