【Linux】【CentOS7】VNC Server トラブルシューティング集

「突然 VNC Server にログインできなくなった!」など VNC Server 関連でのトラブルシューティング集です。

 

VNC Server のインストール手順は以下を参考にしてください。

 

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

 

【VNC】 tigervnc-server でマルチユーザーログイン可能に設定する手順

 

 

VNC Server サービスが起動しない

しばらく VNC Server サービスを利用せずに、久しぶりに VNC Server にログインしようとすると、つながらない場合があります。

もちろん何らかの環境が変わったことが原因ですが、この数か月様々な設定変更を繰り返していた場合、すぐに原因を思いつきません。

そんな時のトラブルシューティング方法です。

 

「UltraVNC Viewer」を起動して VNC Server へログインしようとしても、下図のようなエラーになった場合です。

 

VNC Server へのログインが失敗しました。

【Linux】【CentOS7】VNC Server トラブルシューティング集

 

ssh で VNC Server サービスを起動しているサーバーにログインします。

 

systemctl コマンドで VNC Server サービスのステータスを確認します。

# systemctl status vncserver@:1.service
vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 金 2017-08-11 08:53:03 JST; 3min 55s ago
Process: 8339 ExecStart=/usr/sbin/runuser -l test -c /usr/bin/vncserver %i (code=exited, status=1/FAILURE)
Process: 8333 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

8月 11 08:53:03 test07 systemd[1]: Starting Remote desktop service (VNC)...
8月 11 08:53:03 test07 runuser[8339]: Password:
8月 11 08:53:03 test07 systemd[1]: vncserver@:1.service: control process exited, code=exited status=1
8月 11 08:53:03 test07 systemd[1]: Failed to start Remote desktop service (VNC).
8月 11 08:53:03 test07 systemd[1]: Unit vncserver@:1.service entered failed state.
8月 11 08:53:03 test07 systemd[1]: vncserver@:1.service failed.

 

さらに詳しい情報を取得するために「journalctl -xe」コマンドを実行します。

journalctl コマンドを実行した結果、原因が分かりました。

# journalctl -xe

8月 11 08:53:03 test07 systemd[1]: Starting Remote desktop service (VNC)...
-- Subject: Unit vncserver@:1.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit vncserver@:1.service has begun starting up.
8月 11 08:53:03 test07 systemd[1]: Started Session c3 of user test.
-- Subject: Unit session-c3.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-c3.scope has finished starting up.
--
-- The start-up result is done.
8月 11 08:53:03 test07 systemd[1]: Starting Session c3 of user test.
-- Subject: Unit session-c3.scope has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-c3.scope has begun starting up.
8月 11 08:53:03 test07 runuser[8339]: pam_unix(runuser-l:session): session opened for user test by (uid=0)
8月 11 08:53:03 test07 runuser[8339]: You will require a password to access your desktops. ← デスクトップにアクセスするためにはパスワードが必要ですと言っています。
8月 11 08:53:03 test07 runuser[8339]: getpassword error: Inappropriate ioctl for device
8月 11 08:53:03 test07 runuser[8339]: pam_unix(runuser-l:session): session closed for user test
8月 11 08:53:03 test07 runuser[8339]: Password:
8月 11 08:53:03 test07 systemd[1]: vncserver@:1.service: control process exited, code=exited status=1
8月 11 08:53:03 test07 systemd[1]: Failed to start Remote desktop service (VNC).
-- Subject: Unit vncserver@:1.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit vncserver@:1.service has failed.
--

 

VNC Server へアクセスするためのパスワードでエラーになっていることがログから分かりました。

testアカウントでアクセスするので、test アカウントで「vncpasswd」コマンドを実行して VNC Server ログイン用のパスワード設定が必要です。

 

$ vncpasswd
Password:
Verify:

 

パスワードを設定したら、VNC Server サービスを起動します。

# systemctl restart vncserver@:1.service
Job for vncserver@:1.service failed because a configured resource limit was exceeded. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.

 

起動に失敗しました。

再度「journalctl -xe」コマンドで詳細を調べます。

 

journalctl -xe

-- Unit session-c7.scope has begun starting up.
8月 11 09:51:56 test07 runuser[13273]: pam_unix(runuser-l:session): session opened for user test by (uid=0)
8月 11 09:51:56 test07 runuser[13273]: Warning: test07:1 is taken because of /tmp/.X11-unix/X1 ← 過去のロックファイルが邪魔をして VNC Server サービスが起動できないようです。
8月 11 09:51:56 test07 runuser[13273]: Remove this file if there is no X server test07:1
8月 11 09:51:56 test07 runuser[13273]: A VNC server is already running as :1
8月 11 09:51:56 test07 runuser[13273]: Warning: test07:1 is taken because of /tmp/.X11-unix/X1
8月 11 09:51:56 test07 runuser[13273]: Remove this file if there is no X server test07:1
8月 11 09:52:31 test07 runuser[13273]: New 'test07:5 (test)' desktop is test07:5
8月 11 09:52:31 test07 runuser[13273]: Starting applications specified in /home/test/.vnc/xstartup
8月 11 09:52:31 test07 runuser[13273]: Log file is /home/test/.vnc/test07:5.log
8月 11 09:52:31 test07 runuser[13273]: pam_unix(runuser-l:session): session closed for user test
8月 11 09:52:31 test07 systemd[1]: PID file /home/test/.vnc/test07:1.pid not readable (yet?) after start.
8月 11 09:52:31 test07 systemd[1]: Failed to start Remote desktop service (VNC).
-- Subject: Unit vncserver@:1.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit vncserver@:1.service has failed.
--
-- The result is failed.
8月 11 09:52:31 test07 systemd[1]: Unit vncserver@:1.service entered failed state.
8月 11 09:52:31 test07 systemd[1]: vncserver@:1.service failed.

 

「/tmp/.X11-unix/X1」を削除します。

# cd /tmp/.X11-unix/
# ls -l
合計 0
srwxrwxrwx. 1 root root 0 8月 11 00:31 X0
srwxrwxrwx. 1 test test 0 8月 2 22:05 X1 ← このファイルが原因のようですが、「srwxrwxrwx」と、あまり見ない形式です。
srwxrwxrwx. 1 test test 0 8月 11 09:37 X2
srwxrwxrwx. 1 test test 0 8月 11 09:40 X3
srwxrwxrwx. 1 test test 0 8月 11 09:48 X4
srwxrwxrwx. 1 test test 0 8月 11 09:52 X5
[root@test07 .X11-unix]# file X1 ← ファイルの形式が気になったので確認しました。
X1: socket ← ソケットファイルのようです。
[root@test07 .X11-unix]# cat X1
cat: X1: そのようなデバイスやアドレスはありません ← ファイルは開けません。
[root@test07 .X11-unix]# rm X1 ← ソケットファイルを削除します。
rm: ソケット `X1' を削除しますか? yes

 

簡単に説明しますと、Linux ではリソースを何でもファイルとして扱います。

CD、DVD、HDDとかフロッピーディスクもファイルで扱います。

NICなどのインターフェースもファイルで扱います。

VNC Server サービスはネットワーク越しにクライアントがアクセスしてきて(今回の場合は「test」アカウント)、VNC Server にログインします。

Linuxではネットワークはソケットを通して通信します。

そのため、VNC Server サービス用にソケットファイルが用意されていて、そのソケットファイルが「X1」というファイル名だったということです。

 

ちなみに、ソケットファイルの中身は空っぽなので、ファイルサイズは「0」バイトです。

 

再度 VNC Server サービスを起動します。

# systemctl start vncserver@:1.service
# systemctl status 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-08-11 10:06:28 JST; 37s ago
Process: 14318 ExecStart=/usr/sbin/runuser -l test -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
Process: 14305 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 14381 (Xvnc)
CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
? 14381 /usr/bin/Xvnc :1 -desktop test07:1 (test) -auth /home/test/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /hom...

8月 11 10:05:52 test07 systemd[1]: Starting Remote desktop service (VNC)...
8月 11 10:06:28 test07 systemd[1]: Started Remote desktop service (VNC).

 

今度は正常に起動したようです。

 

再度ログインを試します。

【Linux】【CentOS7】VNC Server トラブルシューティング集

 

 

今度はパスワード入力画面が表示されました。

【Linux】【CentOS7】VNC Server トラブルシューティング集

 

VNC Server にログインできました。

【Linux】【CentOS7】VNC Server トラブルシューティング集

 

 

まとめ

以上、VNC Server のトラブルシューティングでしたが、今後もトラブルシューティングを載せていきます。

 

 

 

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

コメントを残す

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