xrdpでWindows機からLinux機へRDP接続

20180415 「SELinuxのポリシー作成(geoclue_t→unconfined_service_tへのアクセス制御緩和)」と「カラープロファイルを作成するには認証が必要です」の解消を追記しました。

自宅のCentOS機は、普段Windows機からsshログインしCUIで操作していますが、ときたまGUIを使いたくなる時があります。そのときたまのためにCentOS機からもモニターにHDMIケーブルを刺しているんですが、モニターのHDMIポートが2つしかないうえに、ほとんどGUIを使わないのでポートを占有するのがもったいない。なのでHDMIケーブルをひっこぬき、必要なときだけWindows機からリモートでGUIを扱えるようにしたいと思ったのが本投稿のきっかけ。

WindowsからLinuxへリモートGUI操作を行う手段

  1. X11のsshポートフォワーディング
  2. VNCサーバをたてる
  3. xrdpサーバをたてる

1のX11のsshポートフォワーディングは古くからある鉄板だけど、Tera term等の仮想端末からLinux機へsshでつないでおき、X11の通信に必要な6000番ポートの通信をトンネルするというちょっとめんどくさい手順を踏む必要があるし、クライアントのWindows側にXサーバをインストールする必要があり、複数Windows機を扱う身からするとこれまためんどくさい。

2はLinux機にVNCサーバをインストールし、その5900番ポートへWindows機にインストールしたVNCクライアントから接続するといった流れ。こちらもクライアント側にソフトウェアをインストールする必要があるため却下。

3はLinux機にxrdpサーバをインストールし、RDPを扱えるようにする流れ。Windows機からは標準のリモートデスクトップ(mstsc.exe)でつなぐだけでOK。描写速度も申し分ないとのこと。これでいきましょう(Linux機からLinux機へGUIログインしたくなったらどうすんだという懸念は残りますが……)。ちなみに内部的にはVNCを利用しており、それをrdpに変換してくれるのがxrdpだとのこと。

要件

  • CentOS Linux release 7.3.1611 (Core)
  • 3.10.0-514.26.2.el7.x86_64

いつものお約束。Basic Serverでインストールしたこの環境にsudo yum groupinstall “GNOME Desktop” を行い、スタンドアロンではGNOME環境が扱えるようになっていることを前提とします。

xrdpのインストール

EPELリポジトリからインストール

起動&自動起動設定

ファイアウォールあなあけ

SELinuxのポリシー作成(geoclue_t→unconfined_service_tへのアクセス制御緩和)

xrdpインストール後、/var/log/audit/audit.logを見ると上記アクセスがdeniedされたというログがログインの度に出ることに気づきました。こんな感じ。

geoclue_tというのは位置情報認識モジュールが利用するドメイン。ネットを漁るとどうやらVNC周りのリソースに対するSELinuxポリシーにバグがあるらしい。

参考:
https://bugs.centos.org/view.php?id=13878

プロセス周りを見てみるとやっぱりどうもそうっぽい。

鬱陶しいのでSELinuxのポリシーを作成します。というわけでまずはSELinuxのポリシー作成。ログみながら試行錯誤するとこうなりました。厳密にやるならunconfined_service_tじゃなくてきちんとVNCにタイプを定義しないといけない。unconfined_service_tはわりとゆるゆるな権限らしいです。

続いてポリシーのコンパイル。

最後にポリシーのインストール。

これでよし。

「カラープロファイルを作成するには認証が必要です」の解消

xrdpにログインする際、毎度こんな画面が表示されます。

別にこれ自身はキャンセルで回避できて、それで何か困った現象が起こるわけでもないんだけどなんだか気持ち悪い。なにかっつうとcolordのPolicyKitの権限が足りないというgnome-settings-daemonのバグだとのことで、ずっと放置されてるみたい。

参考:
https://bugzilla.redhat.com/show_bug.cgi?id=1149893
https://www.centos.org/forums/viewtopic.php?t=59312

二番目の参考ページにも書いてますが、回避策はこれ。PolicyKitに新しいルールを追加する。

Windows機から接続

以上で設定はおわり。超簡単。win + Rからmstsc.exeを起動し、Linux機に接続。

xrdpのパスワードを求められます。何もいじってなかったら適当なUNIXユーザでOK。

ほんでログイン完了。

無事Linux機へWindows機からRDP接続できました。ちょこっと遊んでみましたが速度は申し分なし。設定も簡単。いうことないです。もちろんRDPなのでインターネット経由では使えないけどね。

参考

コメントを残す

メールアドレスが公開されることはありません。

*

  • メールアドレス、サイトは必須ではありません。
  • 日本語が含まれない投稿は無視されます。
  • URLはh抜き(ttp://もしくはttps://)で記載してください。