読者です 読者をやめる 読者になる 読者になる

リモートデスクトップソフトのX2Goを使ってみた

X Window SystemはXサーバー(入力受付&画面描画)とXクライアント(アプリ本体)に分かれている。なのでリモートでアプリを実行しつつローカルで表示&操作とかも出来る。でもマシンをシャットダウンしてもセッションを継続させたかったのでリモートデスクトップサーバー/クライアントを利用することにした。

Linuxリモートデスクトップソフト

Linuxリモートデスクトップサーバー/クライアントは結構あって

  • VNC
  • MS RDP系
  • NX系

等がメジャーらしい。

VNC

VNCはローカルネットワークで使う分には良いが、インターネットを通して使うにはちょっと厳しいという噂。ただしTightVNCとかTigerVNCとかは結構速いらしい(使ったことがないので実際のところは分からない)。

MS RDP

MS RDPはMicrosoftが開発したリモートデスクトッププロトコル。インターネットを介しての使用でもそこそこ使える。Linux用のサーバー/クライアントもある。

NX

NXはDXPC(the Differential X Protocol Compressor project)から派生した技術らしい。こちらのページによるとVNCよりかなり使いやすいとのこと。

どれを使うか?

VNCの評判がイマイチなのでRDPを使うことに。OSはサーバー/クライアント共にArch Linux。RDPサーバーのxrdpとバックエンドのx11rdpは公式リポジトリではなくAUR。う〜ん、まぁAURでもいいんだけど……、NXも評判いいみたいだし……。ということでNXサーバーも調べてみた。

Linux用NXサーバーには次のようなものがあるらしい。

  • NoMachine NX Free Edition (同時接続数に制限あり)
  • FreeNX (開発停止?)
  • NeatX (Google製、現在積極的な開発は行われていない)
  • X2Go

こちらのページによるとX2Goが最近の注目株だそうだ。しかもArch Linuxの公式リポジトリで提供されている。

X2Goサーバーの導入

パッケージのインストール

$ pacman -S x2goserver
$ pacman -S openssh
$ pacman -S xorg-xauth xorg-xhost

SSHサーバーの設定

$ nano /etc/ssh/sshd_config
AllowTcpForwarding yes
X11UseLocalhost yes
X11DisplayOffset 10
X11Forwarding yes

SSHサーバーの有効化

$ systemctl enable sshd.service

FUSEモジュールを起動時にロード

$ nano /etc/modules-load.d/fuse.conf
fuse

SQLデータベースの初期化

$ x2godbadmin --createdb (要管理者権限)

X2Goサーバーの有効化

$ systemctl enable x2goserver.service

カスタムセッションの作成

日本語ロケールやIMを使用するためにはサーバー側に次のようなシェルスクリプトを配置しておく。

$ nano サーバー側の/home/ユーザー名/xfce4_session.sh
#!/bin/sh
export LANG=ja_JP.UTF-8
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
exec startxfce4

↑使用するロケール、IM、デスクトップ環境に合わせて適宜変更して下さい。

実行権限の付与

$ chmod +x /home/ユーザー名/xfce4_session.sh

再起動

設定を有効にするために再起動する。

X2Goクライアントの導入

パッケージのインストール

$ pacman -S x2goclient

SSH接続の確認

X2Goでリモートデスクトップ接続する前にSSHがつながるか確認。

$ ssh ユーザー名@ホスト名orIPアドレス

X2Goサーバーに接続

アプリケーションメニュー > インターネット > X2Go Cleint(または端末でx2goclient)でX2Goクライアントを起動。

Session > New Session で新しいセッションを作成。

うちの環境では、最初に1度だけ

Session Type: XFCE4

で繋いだ後、一旦接続を切って、

Session Type: Custom
Command: /home/ユーザー名/xfce4_session.sh

で接続しなおさないと日本語が使えなかった。

使用感

  • Connection: WAN
  • Compression Method: 16m-jpg
  • Image quality: 9
  • Display: 1024x768

以上のような設定で使用したところ、接続・切断に数秒かかるが、接続が確立されればレスポンスは良好。 ただし、JPEG圧縮で画像を転送しているせいか、よくよく見るとアイコンや文字に若干ノイズが出ている。 まあ画質とレスポンスはトレードオフの関係なので最適な設定をみつけるしかない。

デスクトップウィンドウを閉じてもセッションは継続される。 セッションを完全に終了したい時はセッション管理画面のTerminateを選ぶ。

参考資料