23
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7にWindowsからVNCで接続する方法

Last updated at Posted at 2018-06-24

CentOS7にWindowsからVNC接続する必要が出てきて、いろいろ動かなくてハマったのでメモとして残す。個人的にはVNC接続にこだわらなければXRDP使ったほうが手っ取り早いとは思う...

検証環境

  • CentOSマシン : CentOS7(1708) 64bit (minimal-install)
  • Windowsマシン : Windows10(1804) 64bit
  • VNCソフト : UltraVNC v1.2.2.1

マシンへの基本的なOSインストールは完了しているものとする。

UltraVNCのインストール(Windows側作業)

WindowsマシンへUltraVNCをインストールする。
インストールウィザードでは少なくとも"UltraVNC Viewer"を選択していること。(他は任意でOK)
uvnc.png

VNCのセットアップ(CentOS側作業)

GUIコンポーネント(GNOME Desktop)のインストール

CentOSを最小インストールしている場合、GUIに関連するモジュールが不足する。
以下のコマンドにて関連モジュールを一括インストール可能。

# yum groups install "GNOME Desktop"

なお、元から"GNOME Desktop"モードでインストールしている場合は不要。
上記作業後はGUI絡みの設定が別途発生するが、それに関してはこちらを参照すること。

TigerVNCのインストール

# yum install tigervnc-server

パスワード設定

VNC接続させたいユーザーにログインした状態で以下のコマンドを実行してパスワードを設定する。今回はrootなのでそのまま実行しているが、別ユーザーであればsu -などでそのユーザーに切り替えること。

# vncpasswd
Password: (任意のパスワード)
Verify: (任意のパスワード再入力)
Would you like to enter a view-only password (y/n)? n (見るだけのアクセス権が必要であればyとしてパスワードを設定すること)
A view-only password is not used

ファイアウォール(firewalld)にてVNC通信を許可

VNCはTCPの5900+セッション番号を使用する模様。
今回はセッション1しか使わないため、TCP:5901を許可する。

# firewall-cmd --permanent --add-port=5901/tcp
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client
  ports: 5901/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ファイアウォールが無効な環境では設定の必要なし。

VNCの起動確認

セッション番号1番として一時的に起動させ、接続確認を行う。

# vncserver :1
xauth:  file /root/.Xauthority does not exist

New 'hostname:1 (root)' desktop is hostname:1

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/hostname:1.log

# vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              プロセス番号

Windows機にて"UltraVNC Viewer"を起動し、"VNC Server"の欄に接続先IP/FQDN:VNCポート番号と入力してから"Connect"を押す。
test1.png

接続できればパスワードを求められるので、設定しておいたVNCパスワードを入力する。
test2.png

問題なければGUIが表示される。ここまで確認ができたらこの画面はそのまま閉じる。
test3.png

問題なく確認が終われば、一時起動させていたプロセスを停止させる。

# vncserver -kill :1
Killing Xvnc process ID プロセス番号
# vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID

VNCの自動起動化

サービスとして登録し、OS起動時に自動的に起動するようにする。

# cp -p /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
# vi /etc/systemd/system/vncserver@:1.service
# systemctl daemon-reload
# systemctl start vncserver@:1.service
# systemctl enable vncserver@:1.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:1.service to /etc/systemd/system/vncserver@:1.service.
/etc/systemd/system/vncserver@:1.service
※コメント部省略
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=root         ← <USER>をrootに変更
PAMName=login     ← 追記

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/root/.vnc/%H%i.pid              ← /home/<USER>を/rootに変更(他のユーザーは<USER>を置き換えるだけで良い)
ExecStop=-/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

上記作業後、再度Windows機からVNCアクセスを試行して問題なければ作業完了。

ハマった箇所

PIDファイルの位置

rootでVNC接続できるようにしようと考えたが、サービスファイル中のユーザー名設定にて何も考えずに<USER>rootにするとサービスが起動しない。
理由は単純で、そのままユーザー名だけ置き換えると存在しない場所にPIDファイルの場所が指定されてしまう。きちんと存在するパスにすること。

【NG】
PIDFile=/home/root/.vnc/%H%i.pid

【OK】
PIDFile=/root/.vnc/%H%i.pid

こんなミスをするのはコピペ厨の自分だけだとは思う。/home/rootなんて無いよね...

メニューバーが表示されない

VNC接続でき、いざツールを使うぞ!と思ったらWindowsのタスクバーに当たると思われるメニュー類が全く表示されていない。
解決するにはサービス定義ファイルの[Service]セクションにPAMName=loginと書かなければならない模様。
サービス定義を書き換えたらsystemctl daemon-reloadを忘れずに。

参考: https://qiita.com/HiroshiAkutsu/items/6856e84c6efc126b801c
※2018年中旬頃のアップデートでFixされてたはず。

ログアウトできない

VNC接続後に画面を閉じようとし、普通に画面右上のメニューからログアウトをクリックしても反応しない。これに関しては特に気にせずVNCセッションを切ってしまえば良いかと諦めることにした。

23
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?