· 

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

こんにちは。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://<any ipv4 format addr>:3389      192.168.1.1:3389

;   port=tcp6://.:3389                          ::1:3389

;   port=tcp6://:3389                           *:3389

;   port=tcp6://{<any ipv6 format addr>}:3389   {FC00:0:0:0:0:0:0:1}:3389

;   port=vsock://<cid>:<port>

#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

接続するとインストールしたxrdpの画面が出てきますので、

作成手順①で作成したユーザー名とパスワードを入力します。

以上でリモートデスクトップにアクセスすることができました。

クラウド上にインスタンスを立てたけどGUIが欲しい、そんな方に本記事が少しでもお役に立てれば幸いです。

 

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