LinuxユーザーがイジるはじめてのAzure

LinuxユーザーがAzureを使いこなせるように応援するブログです

AzureのCentOS7.3でwrdpを使ったGUI環境を作ってみる

完全に手つかずでいましたが、そろそろ更新します。。ふぅ。

 

今回のお題はAuzre上のLinuxOSをGUIで操作できるようにしてみよう、というテーマです。CUI以外は邪道だー、コマンドラインなめんな、なんて声も軽く聞こえてきますが、まぁたまにはこういったものにも触れてみるのも面白いかなと。

 

では早速はじめますが、ゴールは以下の状態です。WindowsクライアントについているリモートデスクトップでRDP(3389/tcp)でアクセスし、CentOS内のウィンドウマネージャーを呼び出した、という状態です。

 

f:id:akazure:20170316160843j:plain

 

●事前準備

 CentOS 7.3を1台、Azure環境で用意してください。

 特に特別な設定は不要ですが、NetworkSecurityGroup(NSG)のみ、3389/tcp

 ポートを受け付ける設定(受信セキュリティ規則)を入れておいてください。

 接続元であるWindowsクライアントのIPアドレスが固定の場合や、NATされた

 アドレス帯として接続元が絞れる場合はNSGの設定で接続元を絞ると、より

 セキュアかと思います。(ここではAnyにしています)

 

●注意事項

 ディストリビューションが異なる環境や、バージョンが異なる場合はうまく動か

 ない可能性があります。都度構築環境に合わせてググって補足してください。

 RHELのBuggillaにもいくつか投稿されていますので結構闇に入る場合も多いです。

 

●開始

 0)以下の手順は全てrootで実施します。

 

sudo su -

 

 1)必要RPMの準備

   ※epel-releaseのrpm名はOSのバージョンによってURLが異なります。

 

rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

 

 2)xrdp、tigervnc-server、GNOME Desktopグループ全てのインストール

   ※GNOME Desktopのインストールに20分ぐらい時間かかります。

yum install -y xrdp tigervnc-server
yum -y groupinstall "GNOME Desktop" 

 3)xrdpとxrdp-sesmanのSELinux ラベル付け

   ※ここが抜けるとsystemctl start xrdpが失敗するので注意。

 

chcon -t bin_t /usr/sbin/xrdp
chcon -t bin_t /usr/sbin/xrdp-sesman

 

 4)xrdpの日本語設定

   ※やってもやらなくてよいです。お好みで。

cd /etc/xrdp
wget http://www.mail-archive.com/xrdp-devel@lists.sourceforge.net/msg00263/km-e0010411.ini

cp km-e0010411.ini km-0411.ini
cp km-e0010411.ini km-e0200411.ini
cp km-e0010411.ini km-e0210411.ini
vi startwm.sh
 以下の場所に1行追加
 #. /etc/environment
 #export PATH=$PATH
 #export LANG=$LANG
 export LANG=ja_JP.UTF-8 

  5)xrdpの設定

vi /etc/xrdp/xrdp.ini 

 

色を24bitに変更(defaultの32bitだと接続できない場合がある模様)
以下の行を32から24へ変更
max_bpp=24

 

さらに以下の場所に8行を追加
;
; Session types
;

 

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=ask5910
xserverbpp=24

  6)xrdpの起動

   ※バージョンによってはservie xrdp.servie startですが、以下は7.x系の手順

systemctl start xrdp.service 

  7)LISTENポートの確認

   ※以下2つのポートがLISTENしていること

 3389 1088/xrdp
 3350 1087/xrdp-sesman 

  8)xrdpの自動起動設定

systemctl enable xrdp.service 

  9)firewalldの起動、自動起動とxrdpの許可設定

   ※iptablesでも可。要は3389ポートを受けつける設定を入れる場所です。

systemctl status firewalld
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --list-all
firewall-cmd --list-services --zone=public
firewall-cmd --add-port=3389/tcp --zone=public  --permanent
firewall-cmd --reload
firewall-cmd --list-ports --zone=public 

 10)サーバー再起動

   Azureポータルから再起動でもshutdown -r nowでもどちらでも可。

11)vncの設定

vncpasswd
 ※2回 rootのパスワードと合わせる
vncserver :10
 ※5910ポートでxrdpからvncアクセスする
 ※間違えた場合は「vncserver -kill :10」でプロセスを落とす
netstat -atuanp
(以下のポートがLISTENしていることを確認)
 5910 1520/Xvnc 

 12)vnc起動時のウィンドウマネージャを設定

vi /root/.vnc/xstartup 

    以下の内容に差し替え

#!/bin/sh

#unset SESSION_MANAGER
#unset DBUS_SESSION_BUS_ADDRESS
#exec /etc/X11/xinit/xinitrc

# Uncomment the following two lines for normal desktop:

unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
startx &

 

13)rootパスワードの設定

 

sudo su -
passwd
  ※2回

 

13)Windowsクライアントから接続

   Windows10 Aniversaryから、接続先はCentOSにターミナルログインする

   際に使ったPublic-IPのIPアドレスを指定してリモートデスクトップアクセス

   します。IP直打ちなのでセキュリティが、、的なポップアップは無視して

   継続します。

 

f:id:akazure:20170316164329j:plain

 

f:id:akazure:20170316164439j:plain

 

以下を選択・入力してOKします。

 Session  sesman-Xvnc
 username  root
 password  rootのパスワード
 port     5910 

 

画面が表示され、言語設定の画面になればOKです。

 

補足:

この手順はまだ不完全な面もあります。

vncserverを固定で5910で起動させていますが、wrdpから呼び出されるポートに

合わせてvncserverを呼び出す方法が見当たりませんでした。ご存じの方が

いらっしゃればレスいただければと。