Linux(Ubuntu)のリモートデスクトップ設定(Google Chrome リモートデスクトップ/xrdp)
Google Chromeリモートデスクトップ
Windows, Mac, Linuxなら、Google ブラウザにGoogleリモートデスクトップ拡張を入れたら、リモートデスクトップを手軽に繋げられるソフトです。
ネットに繋がっていれば、結構色々なセキュリティを飛び越えて繋がる強力なやつです。
なお、X86のCPUコアにしか対応していないので、ArmのRaspberry Pi(ラズパイ)やJetson Nanoでは使えないです。
基本ホスト側は以下の3ステップで実現できます。
- Google Chrome(Googleアカウント取得)
- Googleリモートデスクトップ拡張を入れる
- リモート設定をオンにする
クライアントは、Google Chromeで接続するだけです。
ただ、Linuxのホスト設定だと結構はまりどころが多いので、メモしておきます。
ホスト側設定
最初にホスト側の設定です。Linux(Ubuntu)を想定しています。
Google Chromeインストール
Googleアカウントを登録(手順は省略)した上で、Google Chromeブラウザをインストールします。Chrominiumブラウザだと駄目なので注意しましょう。Linuxだと以下コマンドでインストールできます。
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
GoogleRemoteDesktopインストール
Linuxの場合をメインに、安定してセットアップできる方法を紹介します。
コマンドでインストール
以下コマンドを実行してインストールします。
$ wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb -P ~/Downloads
$ sudo apt install ~/Downloads/chrome-remote-desktop_current_amd64.deb
事前セットアップ
事前に以下コマンドを実行しておきます。
$ mkdir ~/.config/chrome-remote-desktop
これをやらないと、リモートアクセスの設定で「オンにする」という画面が出てこないです。
リモート共有設定
「パソコンにアクセス」をクリックします。
Googleアカウントでログインすると、右下に「リモートデスクトップをインストールしますか?」
と出てくるので「インストール」をクリックします。
あとは、リモートアクセスの設定で「オンにする」をクリックして、PINを設定するだけです。
ただ、うまく行かない場合が多いので、本記事の後にトラブルシューティングを記載します。
クライアント設定
クライアント側は、Google Chromeブラウザで、以下にアクセスするだけです。
ホスト側が起動していると、勝手に推奨の接続先として表示されるので、選択して設定したPIN(リモートサポートの場合はパスコード)を入力するだけです。GoogleRemoteDesktopアプリはインストールしなくてもアクセスできます。
トラブル発生したときは、だいたいホスト側の設定なので、この後のトラブルシューティングを試してください。
リモートアクセスではうまくいかないけれど、リモートサポートだとうまくいくケースもあるようです(実際ありました)。コードを生成する手間はありますが、こちらで用が足りるならリモートサポートを使う手もあります。
トラブルシューティング
あとは、手順に従ってうまくいけばよいのですが、Linuxだと色々つまづくことが多いので、トラブルシューティングを記載します。
リモート設定をオンにできない
以下アドレスにアクセスした後、通常だとリモートアクセスの設定で「オンにする」という画面が出てきて「オンにする」をクリックすることになります。
ただ、「オンにする」画面が出てこない場合があります。その場合は、以下コマンド実行してから、再度アクセスすると画面が出てくるようになることがあります。
$ mkdir ~/.config/chrome-remote-desktop
PINを入力後「不明なエラーが発生しました。」と表示される
このとき「オンにする」のあと、PINを入力後「不明なエラーが発生しました。」と表示される場合もあります。
Google Chromeを再インストールなどためしても、うまくいきませんでしたが、何故か別のPCからxrdp経由でリモートアクセスして「オンにする」をクリックするとうまくいったりしました。
リモートアクセスが「起動しています…」で停止してしまう
6桁のPINを入力した後、起動しています…で止まってしまうケースがありました。Ubuntu20.04だとOK、Ubuntu18.04はNGでした。ただし、ハードウェアが異なるので、Ubuntuのバージョンが直接の原因かは不明です。
このケースはまだ解決できていませんが、リモートアクセスでなく、リモートサポート(リモートアクセスの簡易版)ならうまくいきました。
リモートアクセスしたあと黒画になる
/opt/google/chrome-remote-desktop/chrome-remote-desktop
を修正します。
ネットにいろいろ情報ありますが、バージョンによって変更方法がかわるのがややこしいです。自分の場合の差分は以下の通りでした。
119c119
< FIRST_X_DISPLAY_NUMBER = 0
---
> FIRST_X_DISPLAY_NUMBER = 20
507,508c507,508
< # self._launch_server(server_args)
< # if not self._launch_pre_session():
---
> self._launch_server(server_args)
> if not self._launch_pre_session():
510,513c510
< # self.launch_desktop_session()
< display = self.get_unused_display_number()
< self.child_env["DISPLAY"] = ":%d" % display
<
---
> self.launch_desktop_session()
1029,1030c1026,1027
< # while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
< # display += 1
---
> while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
> display += 1
以下サイトで紹介しているスクリプトも上記と似たことをしています。以前は動いたのですが、バージョンアップに従い動かなくなってしまいました。
ホストにディスプレイを接続しないとリモートアクセスしたあと黒画になる
ホストにディスプレイを接続しない状態のみ黒画になるケースです。
ダミーのディスプレイ表示設定をする手段もありますが、画面が表示できなくなったりといったトラブルもあったりします。手っ取り早くて確実なのは、以下のようなダミーのプラグをつけて、ホストPCをディスプレイがついているかのように騙してやることです。
Windowsリモートデスクトップ設定(xrdp)
合わせて、xrdpでの設定も紹介します。Google リモートデスクトップのようにネット越しでいきなりアクセスはできませんが、Googleリモートサポートしか使えない場合に、Google Remoteデスクトップとくみあわせて使う方法もあると思います。
以下コマンドでxrdpをインストールして自動起動設定します。
$ sudo apt update
$ sudo apt -y install xrdp
$ sudo systemctl enable xrdp
/etc/xrdp/startwm.sh
を編集します。
$ sudo vim /etc/xrdp/startwm.sh
以下2行を追記します。
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
追記する場所は以下となります。
if test -r /etc/profile; then
. /etc/profile
fi
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
以下設定ファイルを作成します。
cat <<EOF > ~/.xsessionrc
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
EOF
サービスを再起動します。
$ sudo systemctl restart xrdp
これで簡単にWindowsのリモートデスクトップアクセスができます。
まとめ
Googleリモートデスクトップ、便利なのですがハマりどころあったのでメモ代わりに残しておきます。
参考リンク
変更履歴
- 2022/10/03 設定方法を修正、xrdpに関して追記
- 2022/03/10 文章を修正
Discussion
ご紹介いただいた方法で、Ubuntu 20.04.4 LTS 上のChromeリモートデスクトップで6桁のPINが登録できました。ありがとうございます。当環境でもエラーが出ました。その副作用かもしれませんがファイルアプリがUbuntuで操作している画面には表示されず、Chromeリモートデスクトップの仮想?画面に表示されるようになってしまいました。WindowsのChromeからUbuntuに接続するとその真っ黒なデスクトップにファイルアプリが表示されている状況です。ホストのUbuntuの画面に接続できておらず、Chromeリモートデスクトップ専用の画面のようなものに繋がってしまうようです。
エラーのログを確認しながら環境が治せるか頑張ってみようと思います。
情報ありがとうございます!うまくいったようでまずは良かったです。追加情報もありがとうございます。
リモートデスクトップ、標準で対応して欲しいですよね…
上記エラー内容、DISPLAY環境変数が怪しい気がします。
表示したい対象モニター、表示されてるモニターのIPを確認し、
printenvでDISPLAYを表示、また、.bashrcや.zshenvにも変な値入ってないかを確認してみてはいかがでしょうか。
Windows標準のリモートデスクトップでxrdpを使った時に苦心した覚えがあります。
Chromeでなくて申し訳ないです。
ラズパイやJetsonでも欲しいのは切実ですね…
端末アプリも未知のDISPLAYに表示されるようになってしまったようで直せなくなってしまいました。Ubuntuを再インストールしてみます。よくわかりませんがFirefoxとVisual Studio Codeはローカルの画面に表示されてくれます。
以下のツイートのスレッドが参考になるかもしれません。
自分も似たような症状になりました。
下記サイトの手順で解決できました。
また、ログイン(リモート、ローカル共に)時に、authentication requiredが大量に出てしまうようになったのですが、これは下記サイトの手順で解決できました。
貴重な情報感謝です!