CentOS7にWindowsリモートデスクトップ接続する方法

## 検証環境

* CentOS7.4 x64 (Minimal)
* Windows10 1703 Pro


## OSの初期セットアップ
最小インストールしたCentOSを準備した。セットアップ方法は以下を参照。
https://qiita.com/SkyLaptor/items/1036d470c2d4117b9954


## GUIのインストール
最小インストールしているため、まずはGUI機能を一括インストールする。インストールサイズが結構大きいため時間がかかる。

```shell-session:
# yum groups install "GNOME Desktop"
```


### 起動時の状態をCUIモードにする
GUI機能をインストールすると次回の起動からGUIで起動してしまう場合がある。無駄なリソース消費が発生するため無効にしておいたほうが良い。

```shell-session:
# systemctl get-default
graphical.target
```

graphical.targetになっていた場合はCUI(multi-user.target)にする。

```shell-session:
# systemctl set-default multi-user.target
# reboot
```

### CUIモード起動時の初回セットアップ
Gnomeデスクトップをインストールしてた状態でログイン可能なユーザーが1人もいない場合、初回起動時に利用許諾の受諾とユーザーの作成を強制させられる。
GUIモードなら画面上で操作できるが、CUIだと分かりづらい。

```bash:
=============================================================================================
=============================================================================================
Initial setup of CentOS Linux 7 (Core)

1) [!] License information       2) [ ] User creation
       (Kicense not accepted)           (No user will be created)
Please make your choice from above [`q` to quit | 'c' to continue | `r` to refresh]:
```

とりあえず利用許諾を受諾し、適当なユーザーを作成してこの表示をパスする手順は以下となる。（間の文言はかなり省略）

```bash:
# 利用許諾の受諾
...]: 1    # 利用許諾の操作開始
...]: 2    # 利用許諾を受諾
...]: c    # 戻る
# ユーザーの作成
...]: 2    # ユーザー作成の操作開始
...]: 1    # ユーザー作成の開始
...]: 2    # ユーザーIDの入力開始
admin      # ユーザーID(任意の文字列)
...]: c    # 戻る
# 初回セットアップを完了
...]: c    # 初回セットアップ完了
```



## XRDPのインストール

```shell-session:
# yum install epel-release
# yum install xrdp tigervnc-server
```

RHEL7の場合は以下の手順。
RHELにepelから導入したパッケージが入っているとサポートしてもらえなくなるかもしれないので注意。

```shell-session:
# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
もしくは
# curl -OL https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

# rpm -Uvh epel-release-latest-7.noarch.rpm
# yum install xrdp tigervnc-server
```


## XRDPの通信を許可する
firewalldが有効な環境では、RDP通信(TCP:3389)を許可しておく。

```shell-session:
# firewall-cmd --permanent --zone=public --add-port=3389/tcp
# firewall-cmd --reload
```


## XRDPの起動と起動設定

```shell-session:
# systemctl start xrdp
# systemctl enable xrdp
```


## 自動パッケージアップデートの無効化
GUIを入れると勝手に自動アップデートツールが有効になるため、これを無効にする。

```shell-session:
# systemctl stop packagekit
# systemctl mask packagekit
```


## 接続テストと日本語入力テスト
Windowsからリモートデスクトップ(ファイル名を指定して実行で`mstsc`)を起動し、CentOSにアクセスする。
接続時オプションにて画面の色深度を24bitにしておくこと。
接続時にログイン情報を求められるので、rootユーザーの情報を入力する。

![2017-10-04_11h49_11.jpg](https://qiita-image-store.s3.amazonaws.com/0/97774/8d87de34-93d5-a488-59b0-e92e41494120.jpeg)

Gnomeデスクトップ画面が開いたら、画面左上の「アプリケーション」→「アクセサリー」→「テキストエディター」を開き、日本語が入力できるか試す。
なお、日本語と英数の切り替えは「全角/半角」キーで行う。


### 日本語が打てない場合
CentOSのGnome画面の右上にある時刻表示などの近くに「あ」という入力モードが表示されていないと日本語入力ができない。
もし出ていなければ、次の手順で入力メソッドを追加する。

1. デスクトップ左上にある「アプリケーション」から「システムツール」-「設定」を選択する。
1. 設定の一覧から「地域と言語」を開き、「入力ソース」を`日本語(かな漢字)`と`日本語`にする。順番も重要。
1. デスクトップ右上に「あ」が表示されればOK。

![2020-07-17_08h59_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/b12b0e80-bd74-2125-5723-c162c750eb5c.png)

![2020-07-17_09h02_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/3c4b11f0-718e-4d7b-553d-af3adcdbca3e.png)