【Linux】 CentOS7 に VNC をインストールしてリモートより GUI でログインして操作する手順

Linuxと言えばサーバー目的で利用されるOSなので、通常は必要最低限の機能しかインストールされません。

(例えば、WebサーバーならApacheのみ、DNSサーバーならbindのみなど)

 

しかしアプリケーションサーバーとしてLinuxを構築した時に、リモートから(自宅のWindowsパソコンから)インターネット経由でGUIでログインできると便利なことがあります。

今回は CentOS7 に vnc server(tigervnc)をインストールして、WindowsパソコンからリモートログインをしてGUI上からLinuxを操作する手順を説明します。

VNCサーバー(tigervnc)とは?

VNCとは「Virtual Network Computing」の略です。

Windows Serverならターミナルサービスが有名ですが、Linuxの場合は vnc を利用することで「リモートデスクトップ接続」のようにリモートからGUI上でLinuxを操作できます。

 

VNCサーバー/クライアントの構成

どのように構成するか設計します。

  • リモートの CentOS7 に「TigerVNC Server」をインストールする
  • Windowsパソコンに「VNC Viwer」をインストールする
  • ユーザーは一人を想定する
  • firewalldでポートを開ける
  • ポート番号はデフォルト(5901番)を利用する
  • Linuxのデスクトップ環境は「GNOME」にする

 

VNC環境構築の作業概要

初めにVNC環境構築の作業概要を記載します。

1.【Linux/CentOS7】TigerVNCのインストール

2.【Linux/CentOS7】GNOME(デスクトップ環境)のインストール

3.【Windowsパソコン】自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

4.【Linux/CentOS7】VNC用ユーザー&グループを作成する

5.【Linux/CentOS7】VNC用パスワードを設定する

6.【Linux/CentOS7】VNCの設定をする

7.【Linux/CentOS7】Firewalldの設定をする

8.【Windowsパソコン】VNC Viewerからアクセスをする

TigerVNC Serverのインストール

TigerVNC Server は yum コマンドでインストールできます。

※epel等追加レポジトリは不要です。

tigervnc-serverパッケージの関連で「xlib」「perl」「xorg」などもインストールされます。

# yum install tigervnc-server
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile

依存性を解決しました

================================================================================================================
 Package                            アーキテクチャー  バージョン                          リポジトリー     容量
================================================================================================================
インストール中:
 tigervnc-server                    x86_64            1.3.1-9.el7                         base            203 k
依存性関連でのインストールをします:
 libICE                             x86_64            1.0.9-2.el7                         base             65 k
 libSM                              x86_64            1.2.2-2.el7                         base             39 k
 libX11                             x86_64            1.6.3-3.el7                         base            606 k
 libX11-common                      noarch            1.6.3-3.el7                         base            162 k
 libXau                             x86_64            1.0.8-2.1.el7                       base             29 k
 libXcursor                         x86_64            1.1.14-2.1.el7                      base             30 k
 libXdamage                         x86_64            1.1.4-4.1.el7                       base             20 k
 libXdmcp                           x86_64            1.1.1-6.1.el7                       base             32 k
 libXext                            x86_64            1.3.3-3.el7                         base             39 k
 libXfixes                          x86_64            5.0.1-2.1.el7                       base             18 k
 libXfont                           x86_64            1.5.1-2.el7                         base            150 k
 libXi                              x86_64            1.7.4-2.el7                         base             40 k
 libXinerama                        x86_64            1.1.3-2.1.el7                       base             14 k
 libXmu                             x86_64            1.1.2-2.el7                         base             71 k
 libXrandr                          x86_64            1.4.2-2.el7                         base             26 k
 libXrender                         x86_64            0.9.8-2.1.el7                       base             25 k
 libXt                              x86_64            1.1.4-6.1.el7                       base            173 k
 libXtst                            x86_64            1.2.2-2.1.el7                       base             20 k
 libXxf86misc                       x86_64            1.0.3-7.1.el7                       base             19 k
 libXxf86vm                         x86_64            1.1.3-2.1.el7                       base             17 k
 libfontenc                         x86_64            1.1.2-3.el7                         base             30 k
 libjpeg-turbo                      x86_64            1.2.90-5.el7                        base            134 k
 libxcb                             x86_64            1.11-4.el7                          base            189 k
 libxkbfile                         x86_64            1.0.8-5.el7                         base             81 k
 libxshmfence                       x86_64            1.2-1.el7                           base            7.2 k
 mesa-dri-drivers                   x86_64            11.2.2-2.20160614.el7               base            5.1 M
 mesa-filesystem                    x86_64            11.2.2-2.20160614.el7               base             23 k
 mesa-libGL                         x86_64            11.2.2-2.20160614.el7               base            162 k
 mesa-libglapi                      x86_64            11.2.2-2.20160614.el7               base             40 k
 mesa-private-llvm                  x86_64            3.8.1-1.el7                         base            7.7 M
 perl                               x86_64            4:5.16.3-291.el7                    base            8.0 M
 perl-Carp                          noarch            1.26-244.el7                        base             19 k
 perl-Encode                        x86_64            2.51-7.el7                          base            1.5 M
 perl-Exporter                      noarch            5.68-3.el7                          base             28 k
 perl-File-Path                     noarch            2.09-2.el7                          base             26 k
 perl-File-Temp                     noarch            0.23.01-3.el7                       base             56 k
 perl-Filter                        x86_64            1.49-3.el7                          base             76 k
 perl-Getopt-Long                   noarch            2.40-2.el7                          base             56 k
 perl-HTTP-Tiny                     noarch            0.033-3.el7                         base             38 k
 perl-PathTools                     x86_64            3.40-5.el7                          base             82 k
 perl-Pod-Escapes                   noarch            1:1.04-291.el7                      base             51 k
 perl-Pod-Perldoc                   noarch            3.20-4.el7                          base             87 k
 perl-Pod-Simple                    noarch            1:3.28-4.el7                        base            216 k
 perl-Pod-Usage                     noarch            1.63-3.el7                          base             27 k
 perl-Scalar-List-Utils             x86_64            1.27-248.el7                        base             36 k
 perl-Socket                        x86_64            2.010-4.el7                         base             49 k
 perl-Storable                      x86_64            2.45-3.el7                          base             77 k
 perl-Text-ParseWords               noarch            3.29-4.el7                          base             14 k
 perl-Time-HiRes                    x86_64            4:1.9725-3.el7                      base             45 k
 perl-Time-Local                    noarch            1.2300-2.el7                        base             24 k
 perl-constant                      noarch            1.27-2.el7                          base             19 k
 perl-libs                          x86_64            4:5.16.3-291.el7                    base            688 k
 perl-macros                        x86_64            4:5.16.3-291.el7                    base             43 k
 perl-parent                        noarch            1:0.225-244.el7                     base             12 k
 perl-podlators                     noarch            2.5.1-3.el7                         base            112 k
 perl-threads                       x86_64            1.87-4.el7                          base             49 k
 perl-threads-shared                x86_64            1.43-6.el7                          base             39 k
 pixman                             x86_64            0.34.0-1.el7                        base            248 k
 tigervnc-license                   noarch            1.3.1-9.el7                         base             26 k
 tigervnc-server-minimal            x86_64            1.3.1-9.el7                         base            1.0 M
 xkeyboard-config                   noarch            2.14-1.el7                          base            758 k
 xorg-x11-server-utils              x86_64            7.7-14.el7                          base            176 k
 xorg-x11-xauth                     x86_64            1:1.0.9-1.el7                       base             30 k
 xorg-x11-xinit                     x86_64            1.3.4-1.el7                         base             58 k
 xorg-x11-xkb-utils                 x86_64            7.7-12.el7                          base            103 k

トランザクションの要約
================================================================================================================
インストール  1 パッケージ (+65 個の依存関係のパッケージ)

総ダウンロード容量: 29 M
インストール容量: 94 M
Is this ok [y/d/N]: y

完了しました!

 

GNOME(デスクトップ環境)のインストール

サーバー上にデスクトップ環境をインストールします。

その結果、VNC Viewer でデスクトップログインをするとGUI環境が利用できるようになります。

# yum groupinstall "GNOME Desktop"

 

インストールしたらOSを再起動します。

# reboot

 

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする

1.以下の「UltraVNC」のサイトにアクセスします。

http://www.uvnc.com/downloads/ultravnc.html

UltraVNC Server and Viewer

 

2.ページに下の方に UltraVNC のダウンロードリンクがあるので、一番最新の UltraVNC をダウンロードします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

3.自PCのアーキテクチャ(32bit か 64bit)に合った msi パッケージの「DOWNLOAD」ボタンをクリックします。

※自PCは 64bit なので下図は 64bit の msi を選択しています。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

4.別ページに移行するので「I accept the above listed conditions」にチェックを入れて「Download」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

5.「ファイルを保存」ボタンをクリックして「UltraVNC」のパッケージをダウンロードします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

6.ダウンロードしたmsiファイルをダブルクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

7.「実行」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

8.「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

9.今回はWindowsパソコンにクライアントだけインストールするので「View」だけを選択して「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

10.そのまま「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

11.「I Agree」を選択して「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

12.インストール先のディレクトリを選択して「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

13.「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

14.「Next」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

15.インストールが完了したら「Close」ボタンをクリックします。

自宅のWindowsパソコンへ UltraVNC(VNC Viwer)をインストールする手順

 

以上で「UltraVNC」のインストールは完了です。

TigerVNC Serverの設定

ここより「TigerVNC Server」の設定をします。

以下、設定の概要です。

1.VNC用ユーザー&グループを作成する

2.VNC用パスワードを設定する

3.VNCの設定をする

4.Firewalldの設定をする

5.VNC Viewerからアクセスをする

 

1.VNC用ユーザー&グループを作成する

VNC用ユーザーを作成します。

# groupadd vnc
# useradd vncuser

# passwd vncuser
ユーザー vncuser のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

 

2.VNC用パスワードを設定する

続いてVNC用パスワードを設定します。

ここで設定するパスワードは、WindowsパソコンからVNC Viwerでログインする時に入力するパスワードになります。

# su - vncuser ←  vncのパスワードを設定する前に、先ほど作成したVNCユーザー「vncuser」にスイッチします。
$ vncpasswd
Password:
Verify:

 

3.VNCの設定をする

1.オリジナルの設定ファイル「vncserver@.service」をコピーして設定ファイルを作成します。

$ su - ← rootにスイッチします。

# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

 

2.設定ファイルを編集します。

# vi /etc/systemd/system/vncserver@:1.service

 

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Edit /etc/systemd/system/vncserver@.service, replacing <USER>
#    with the actual user name. Leave the remaining lines of the file unmodified
#    (ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
#     PIDFile=/home/<USER>/.vnc/%H%i.pid)
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, you should
# limit connections to the local host and then tunnel from
# the machine you want to view VNC on (host A) to the machine
# whose VNC output you want to view (host B)
#
# [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB
#
# this will open a connection on port 590N of your hostA to hostB's port 590M
# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).
# See the ssh man page for details on port forwarding)
#
# You can then point a VNC client on hostA at vncdisplay N of localhost and with
# the help of ssh, you end up seeing what hostB makes available on port 590M
#
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
#
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l vncuser -c "/usr/bin/vncserver %i" ← <USER>を「vncuser」に書き換える
PIDFile=/home/vncuser/.vnc/%H%i.pid ← <USER>を「vncuser」に書き換える
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

 

3.VNCユーザー(例ではvncuser)の「xstartup」ファイルを編集します。

$ cd /home/vncuser/.vnc/
$ ls
localhost.localdomain:1.log  localhost.localdomain:1.pid  passwd  xstartup
$ vi xstartup

 

#!/bin/sh

#unset SESSION_MANAGER ← 先頭に#を入れてコメントアウトをします。
#unset DBUS_SESSION_BUS_ADDRESS ← 先頭に#を入れてコメントアウトをします。
#exec /etc/X11/xinit/xinitrc ← 先頭に#を入れてコメントアウトをします。
gnome-session & ← この行を追加する。

 

4.vncserverの設定をします。

# systemctl daemon-reload ← /etc/systemd/systemディレクトリ配下のファイルを変更したのでdaemon-reloadで設定変更を反映します。

# systemctl enable vncserver@:1.service ← vncserver@:1.serviceサービスの自動起動を有効にします。

# systemctl start vncserver@:1.service ← vncserver@:1.serviceサービスを起動します。

# systemctl status vncserver@:1.service ← vncserver@:1.serviceサービスが起動していることを確認します。
vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
   Active: active (running) since 木 2017-06-01 20:16:39 JST; 3s ago
  Process: 2450 ExecStart=/usr/sbin/runuser -l vncuser -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
  Process: 2448 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 2473 (Xvnc)
   CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
           ? 2473 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (vncuser) -auth /home/vncuser/.Xa...

 6月 01 20:16:36 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)...
 6月 01 20:16:39 localhost.localdomain systemd[1]: Started Remote desktop service (VNC).
#

 

 

4.Firewalldの設定をする

CentOS7ではデフォルトで Firewalld が有効になっています。

そのため、Firewalld の設定を変更します。

 

1.最初に現在の firewalld の設定を確認します。

# firewall-cmd --permanent --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh ← 現在の firewalld は dhcpv6-client ssh が許可されています。
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

 

2.firewalld に VNC Serverサービスを許可します。

# firewall-cmd --permanent --zone=public --add-service=vnc-server
success

 

3.firewalld の設定をリロードします。

# firewall-cmd --reload
success

 

4.firewalld の設定を確認します。

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: dhcpv6-client ssh vnc-server ← vnc-server が追加されています。
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

 

 

5.VNC Viewerからアクセスをする

1.Windowsのスタートボタンから「UltraVNC Viewer」をクリックしてVNC Viewerを起動します。

VNC Viewerからアクセスをする

 

2.以下のようにアドレスを設定して「Connect」ボタンをクリックします。

VNC Server:[CentOSのIPアドレス:5901]

※デフォルトでは5901番ポートになります。

VNC Viewerからアクセスをする

 

3.パスワードを入力し「Log On」ボタンをクリックします。

VNC Viewerからアクセスをする

 

4.CentOS7にリモートからGUIでログインできることを確認します。

VNC Viewerからアクセスをする

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。