2016/03/28

メモ:Azure の OpenLogic VM の GNOME Desktop に VNC 接続 (+xrdp も)

Azure Marketplace (クラシック ポータルならギャラリー) にある Linux のテンプレートで仮想マシンをデプロイすると、GNOME とか X とかのグラフィック環境は入らず、標準では SSH による接続のみが提供されます。

CentOS ベースの OpenLogic のテンプレートでデプロイした仮想マシンに、GNOME デスクトップ環境と VNC Server (TigherVNC) を入れて、VNC でデスクトップ接続してみます。RHEL や Oracle Linux の場合も同じ、または似たような感じだと思います。

備忘録につき、詳しい説明は省略ごめん。


CentOS (OpenLogic) 7.2 の場合...
(Azure ポータルのリソース マネージャーでデプロイした仮想マシンで試しています)

SSH で接続し、GNOME Desktop を入れて、RUN レベル 5 に変更して、再起動。
[azureuser@mycentos72]$ sudo yum groupinstall "GNOME Desktop"
[azureuser@mycentos72]$ sudo  unlink /etc/systemd/system/default.target
[azureuser@mycentos72]$ sudo ln -s /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
[azureuser@mycentos72]$ sudo reboot


TigherVNC Server を入れて、SSH 接続ユーザー (この例は azureuser) による VNC 接続のためのサービスを構成し、サービスを開始。

[azureuser@mycentos72]$ sudo yum install tigervnc-server
[azureuser@mycentos72]$ vncpasswd
Password: ******
Verify: ******
[azureuser@mycentos72]$ sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
[azureuser@mycentos72]$ sudo vi /etc/systemd/system/vncserver@:1.service
変更前:
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
↓変更後:
ExecStart=/sbin/runuser -l azureuser -c "/usr/bin/vncserver %i"
PIDFile=/home/azureuser/.vnc/%H%i.pid

上書き保存:
:wq!
[azureuser@mycentos72]$ sudo systemctl daemon-reload
[azureuser@mycentos72]$ sudo systemctl enable vncserver@:1.service
[azureuser@mycentos72]$ sudo systemctl start vncserver@:1.service

ファイアウォールが有効な場合は許可(既定はファイアウォール無効)
[azureuser@mycentos72]$ sudo firewall-cmd --permanent --add-service vnc-server
[azureuser@mycentos72]$ sudo systemctl restart firewalld.service

Azure ポータルで 5901/TCP への接続を許可。

オンプレの環境からVNC接続を確認。私は Windows 版 TigherVNC Viewer を使用。Free の RealVNC は暗号化に対応していないため、接続が拒否されます。

TigerVNC
[URL] https://bintray.com/tigervnc/stable/tigervnc/1.6.0



CentOS (OpenLogic) 6.5 の場合... 
(Azure クラシック ポータルでデプロイした仮想マシンで試しています)

CentOS 6.x の場合、GNOME Desktop でインストールされる NetworkManager がAzure Linux Agent (WALinuxAgent) と互換性がないので、ちょっとややこしいです。

SSH で接続し、GNOME Desktop を入れて、RUN レベル 5 に変更して、再起動。
[azureadmin@mycentos65 ~]$ sudo yum remove "WALinuxAgent" 
(↑削除しとかないと、NetworkManager と Conflict して次の Desktop が入らないよ)

[azureadmin@mycentos65 ~]$ sudo yum groupinstall "X Window System" "Desktop" "Fonts" "General Purpose Desktop"
[azureadmin@mycentos65 ~]$ sudo yum remove NetworkManager
(↑削除しとかないと、NetworkManager と Conflict して次の WALinuxAgent が入らないよ)
[azureadmin@mycentos65 ~]$ sudo yum install "WALinuxAgent"
[azureadmin@mycentos65 ~]$ sudo vi /etc/inittab
変更前:
id:3:initdefault:

変更後:
id:5:initdefault:

上書き保存:
:wq!

TigherVNC Server を入れて、SSH 接続ユーザー (この例は azureuser) による VNC 接続のためのサービスを構成し、サービスを開始。
[azureadmin@mycentos ~]$ sudo yum install tigervnc-server
[azureadmin@mycentos ~]$ vncpasswd
Password: ******
Verify: ******
[azureadmin@mycentos65 ~]$ vncserver :1
[azureadmin@mycentos65 ~]$ vncserver -kill :1
[azureadmin@mycentos65 ~]$ vi ~/.vnc/xstartup
変更前:
twn &

変更後:
#twm &
gnome-session &

上書き保存:
:wq!
[azureadmin@mycentos65 ~]$ sudo vi /etc/sysconfig/vncservers
追記:
VNCSERVERS="1:azureuser"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp"
# どうしても Free の RealVNC の vncviewer で接続したいなら...# VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -securitytypes=none"

上書き保存:
:wq!
[azureadmin@mycentos65 ~]$ sudo chkconfig vncserver on
[azureadmin@mycentos65 ~]$ sudo service vncserver stop
[azureadmin@mycentos65 ~]$ sudo service vncserver start

ファイアウォールが有効な場合は許可(既定はファイアウォール無効)
[azureuser@mycentos72]$ vi /etc/sysconfig/iptables
追記:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT 
↓上書き保存:
:wq!
[azureuser@mycentos72]$ sudo service iptables stop
[azureuser@mycentos72]$ sudo service iptables start

Azure ポータルで 5901/TCP への接続を許可。

オンプレの環境からVNC接続を確認。

おまけ - VNCServer に RDP 接続

xrdp (http://www.xrdp.org/) を入れれば、VNC ではなく、RDP (3389/TCP) を使用してリモートデスクトップ接続クライアント(mstsc.exe) やRDP互換クライアントから VNC Server (または X11rdp) に接続できます。

CentOS 7.x の場合...
$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
$ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
$ sudo yum install xrdp
$ sudo chcon -t bin_t /usr/sbin/xrdp*
$ sudo systemctl start xrdp.service
$ sudo systemctl enable xrdp.service
$ sudo systemctl start xrdp-sesman.service

CentOS 6.x の場合...
$ sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum install xrdp
$ sudo chkconfig xrdp on
$ sudo service xrdp start


参考:
Remote Desktop to your Linux Azure Virtual Machine
[URL] https://blogs.msdn.microsoft.com/cloud_solution_architect/2015/05/02/remote-desktop-to-your-linux-azure-virtual-machine/

xrdp をいGNOME Desktop に RDP で接続する

おまけ - ログオンするたびに Authenticate ダイアログ ボックスが出てくるけど認証に失敗

VNC や RDP で GNOME Desktop に接続すると、ログオンするたびに毎回「Authenticate」ダイアログボックスが表示され、root のパスワードの入力が求められると思います。これは、ログオン時に自動実行される PackageKit Update Applet (gpk-update-icon) が要求しているものです。

Azure Linux Agent (WALinuxAgent) によるイメージの一般化の際に root は無効化されているので、どんなパスワードを入れても認証をパスすることはできません。

root の認証は、他の管理ツール (例えば、System > Administration > Users and Groups) でも表示される場合がありますが、以下のように Terminal から sudo で実行すれば回避できます。

$ sudo system-config-users &

自動起動のアプリケーションが表示しているものですから、この方法は gpk-update-icon には適用できません。

ログオン時のこの問題を回避する方法の 1 つは、root を有効化すること (非推奨)。これで、root のパスワードで認証できるようになります。

$ sudo passwd root
New password: ******
Retype new password: ******

別の方法は、System > Preferences >Startup Applications でPakageKit Update Applet を無効にすること。



0 件のコメント: