Windows端末からLinuxサーバーにデスクトップ接続をする

 2021.04.13  株式会社テリロジー 技術統括部

こんにちは。Tachanです🌸

先日、別チームの先輩Iさんから、「Windows端末からOCI上に立てたLinuxサーバーにデスクトップ接続した」というお話を伺い、記事にして皆様に共有したいなと思いました。
今回はLinuxサーバーにデスクトップ接続する方法についてご紹介します。

使用するもの

今回使用するGUIのパッケージは「Server with GUI 」、「TigerVNC」、「xrdp」です。

  • Server with GUI:LinuxのGUI環境です。isoファイルからOSインストールする際にオプションで選択できたりします。Server with GUIのパッケージ名は「graphical-server-environment」です。
  • TigerVNC:RFBプロトコル(GUI操作でリモートアクセスする際に使用される通信プロトコル)を使用して、 コンピューターを遠隔操作するときに使うソフトです。TigerVNCのパッケージ名は「tigervnc-server」になります。
  • xrdp:Windowsのリモートデスクトップ接続で使用される機能をLinux向けに提供しているサーバです。

作成手順① インスタンスとユーザーの作成

Linuxインスタンスを作成します。
詳しい作成方法はこちらの記事をご参照ください。

インスタンスが作成できましたらSSHでアクセスし、
リモートデスクトップ実行時にログインするユーザーを作成します。

[opc@instancename ~]$ sudo su - [root@instancename ~]# useradd -m test [root@instancename ~]# passwd test Changing password for user test. New password: Retype new password: passwd: all authentication tokens updated successfully.

作成手順② SELinuxの停止

SELinuxが有効化になっているとxrdpがうまく起動しない場合があります。
まずは今の設定を確認し、disabled以外の場合はconfigで設定変更をします。

[root@instancename ~]# getenforce Enforcing [root@instancename ~]# sudo vi /etc/selinux/config [root@instancename ~]# cat /etc/selinux/config "/etc/selinux/config" 14L, 543C# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. #SELINUX=enforcing SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are prootected. # mls - Multi Level Security protection. SELINUXTYPE=targeted

作成手順③ デスクトップ環境のインストール

サーバーにGUI環境をインストールしていきます。

[root@instancename ~]# sudo yum groupinstall -y graphical-server-environment [root@instancename ~]# yum install -y tigervnc-server

この後にインストールするxrdpはEPELから提供されているため、EPELリポジトリを有効にしておきます。

[root@instancename ~]# yum install -y https://dl.fedoraproject.org/pub/epel/epel -release- latest-7.noarch.rpm

話が逸れますが、EPELとは、Linuxディストリビューション向けのリポジトリです。
EPELはCentOS公式のリポジトリとは違い、サードパーティー製になります。
EPELなどのサードパーティーがパッケージを提供することで、
CentOS 標準のyumリポジトリでは提供されていないパッケージをインストールすることができます。
ただし、CentOSサポート対象外になるため、利用は自己責任となります。

作成手順④ xrdpのインストールと起動

xrdpをインストールして起動します。

[root@instancename ~]# yum install -y xrdp [root@instancename ~]# systemctl start xrdp [root@instancename ~]# systemctl enable xrdp

作成手順⑤-1 通信制御設定

リモートデスクトップ接続させるために、通信制御設定を行います。

1.ポートがリッスン状態か確認

[root@instancename ~]# netstat -antup | grep xrdp tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN 20802/xrdp tcp 0 0 127.0.0.1:3350 0.0.0.0:* LISTEN 20801/xrdp-sesman

2.Firewalldにリモートデスクトップ接続のポートを追加

ポートの追加設定をします。

[root@instancename ~]# firewall-cmd --zone=public --add-port=3389/tcp --permanent success [root@instancename ~]# firewall-cmd --reload success

※OCI上のNSGの設定も適宜変更する必要があります。

作成手順⑤-2 リモートデスクトップのポートを変更したい場合

リモートデスクトップ接続する際に3389番ポートを使いたくない方向けです。

リモートデスクトップはデフォルトで3389番ポートを使って接続されます。
インスタンスがパブリックに公開されている場合、「IPアドレス」、「ユーザー名」、「パスワード」を知っている人なら誰でもログインすることができてしまいます。
そのため、使用するポートは変更しておきましょう。

1.管理者権限でxrdpの設定ファイルを開く

[opc@instancename ~]# sudo su - [root@instancename ~]# cd /etc/xrdp/ [root@instancename xrdp]# ll total 336 (省略) -rw-r--r--. 1 root root 6063 Jan 2 00:27 xrdp.ini -rw-r--r--. 1 root root 3693 Jan 2 00:27 xrdp_keyboard.ini [root@instancename xrdp]# vi xrdp.ini

2.xrdp.ini の[Globals]内にあるポートを変更

[Globals] (省略) ; Examples: ; port=3389 ; port=unix://./tmp/xrdp.socket ; port=tcp://.:3389 127.0.0.1:3389 ; port=tcp://:3389 *:3389 ; port=tcp://:3389 192.168.1.1:3389 ; port=tcp6://.:3389 ::1:3389 ; port=tcp6://:3389 *:3389 ; port=tcp6://{}:3389 {FC00:0:0:0:0:0:0:1}:3389 ; port=vsock://: #port=3389 port=13389 (ここでは13389としました) ; 'port' above should be connected to with vsock instead of tcp ; use this only with number alone in port above (省略)

3.firewalldに設定変更したポートを追加

作成手順⑤-1の2と同じ手順です。
作成手順⑤-1で3389を追加している場合は削除してください。

[root@instancename xrdp]# firewall-cmd --zone=public --remove-port=3389/tcp --permanent

4.xrdpサービスを再起動

[root@instancename xrdp]# systemctl restart xrdp.service

※OCI上のNSGの設定も適宜変更する必要があります。

作成手順⑥ 接続

Windowsのリモートデスクトップ接続でアクセスします。
※作成手順⑤-2を実施した場合、IPアドレスの後ろに「:」でポート番号をつけます。
例) 123.456.789.012:13389

作成手順⑥ 接続 画像1

接続するとインストールしたxrdpの画面が出てきますので、 作成手順①で作成したユーザー名とパスワードを入力します。

作成手順⑥ 接続 画像2

作成手順⑥ 接続 画像3

以上でリモートデスクトップにアクセスすることができました。
クラウド上にインスタンスを立てたけどGUIが欲しい、そんな方に本記事が少しでもお役に立てれば幸いです。

最後までお読みいただきありがとうございました。

今回の記事は以上になりますが、
弊社では、他にも検証記事やクラウド移行に関する記事を作成しています。

OCIと社内ネットワークをVPN接続してみた
https://cloudsolution.terilogy.com/blog/oci-vpn-20201225

OCI上でWindows DHCPサーバを動かしてみた
https://cloudsolution.terilogy.com/blog/oci-windows-dhcp-server

 


RECENT POST「OCIで作ってみた」の最新記事


OCIで作ってみた

OCVSにブロック・ボリュームをアタッチして、vSphereのデータストアに追加してみた

OCIで作ってみた

Fn Projectを使用したAPI開発

OCIで作ってみた

OCVSをデプロイしてみた 前半

OCIで作ってみた

OCVSをデプロイしてみた 後半

Windows端末からLinuxサーバーにデスクトップ接続をする