CentOSGUI - osakichi/memo GitHub Wiki

VNCサーバの設定

マルチユーザでVNCによるリモートGUIが利用できるCentOS環境の構築方法。

VNCサーバ構築手順

CentOS 7の場合

CentOS 7でもxinetdを使った方法でVNCサーバの構築は可能だが、CentOS 7らしくsystemdを使ってVNCサーバを構築する手順を以下に示す。 (参考: https://wiki.archlinuxjp.org/index.php/TigerVNC

GUI環境を入れる

dnf group --hidden list
dnf group install GNOME

デフォルト環境の変更

systemctl set-default graphical.target # 変える
systemctl set-default multi-user.target # 戻す

確認の解消(は無くなった?)

①tigervnc-serverのインストール

yum install tigervnc-server

②サービスとポート番号の登録

firewall-cmd --new-service=rfb --permanent
success
firewall-cmd --service=rfb --add-port=5900/tcp --permanent
success
firewall-cmd --add-service=rfb --permanent
success
firewall-cmd --reload
success

rfbはVNCで使用するプロトコルの名前(=Remote Frame Buffer)

③XDM認証を有効にする

# vim /etc/gdm/custom.conf
↓記述
-------------------------------
# GDM configuration storage

[daemon]
KillInitClients=true

[security]

[xdmcp]
Enable=true

[greeter]

[chooser]

[debug]
-------------------------------

設定変更を反映するためgdmを再起動する。

# systemctl restart gdm.service

④systemdへのVNCの設定 まず、VNCサービスを待ち受けるためのSocketユニットを設定する。

vim /etc/systemd/system/xvnc.socket
↓記述
-------------------------------
[Unit]
Description=XVNC Server

[Socket]
ListenStream=5900
Accept=yes

[Install]
WantedBy=sockets.target
-------------------------------

次に、VNCサービスの実行を受け持つServiceユニットを設定する。

vim /etc/systemd/system/[email protected]
↓記述
-------------------------------
[Unit]
Description=XVNC Per-Connection Daemon

[Service]
ExecStart=-/usr/bin/Xvnc -inetd -query localhost -once -geometry 1280x800 -depth 24 --PasswordFile=/etc/vncpasswd -desktop hogeserver.kamome 

User=nobody
Group=nobody
StandardInput=socket
StandardError=syslog

ExecStartで指定する実行ファイル/usr/bin/Xvncの先頭に付いているハイフン(-)は「このファイルが無ければ無視してねー」の意味。

-desktopで指定するサーバ名は適宜実際のマシン名等に変更する。 --PasswordFileで指定するパスワードファイル/etc/vncpasswdは準備しておく。 (もしくは「--PasswordFile=/etc/vncpasswd」の代わりに「-SecurityTypes=None」を指定することでVNCパスワードの確認ナシにできるが、外部に公開されるようなサーバでは注意!)

systemdの設定を再読み込みして、VNCサービスを有効化&起動する。

# systemctl daemon-reload
# systemctl enable xvnc.socket
Created symlink from /etc/systemd/system/sockets.target.wants/xvnc.socket to /etc/systemd/system/xvnc.socket.
# systemctl start xvnc.socket

⑤この時点でVNCによるリモートGUIが使用できるようになってるはず。 ダメならOSの再起動なども行いログとか見てトラブルシュート! (補足:仮想マシンの仮想スクリーンとポート番号が被ってる場合もあるので、再起動した方がいいかもね) SElinuxの設定等は各々抜かり無く。

⑥クリップボード転送を有効にするため以下の設定を行うと幸せかも。 「自動起動するアプリケーションの設定」を起動する。

$ gnome-session-properties

出てきたアプリケーション画面で以下のように操作する。

  • [追加]ボタンを押下
  • 「自動起動するプログラムの設定と制御」ダイアログで以下を入力
    • 名前:「VNCサーバの設定と制御」
    • コマンド:「/bin/vncconfig -iconic=1 -nowin=1
    • 説明:「クリップボード転送をサポート」
  • [保存]ボタンを押下

参考: http://net-3.blogspot.jp/2012/09/vnc-vncconfig.html

CentOS 6の場合

xinetdによりサービスを待ち受け、アクセスがあればXvncを起動する方法となる。

①tigervnc-serverのインストール

# yum install tigervnc-server

②xinetdのインストール

# yum install xinetd

③VNCサーバの起動ファイル設定

# vim /etc/xinetd.d/vnc
---------------------
service vnc
{
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -desktop hogeserver.kamome -query localhost -once -geometry 1280x800 -depth 24 --PasswordFile=/etc/vncpasswd
        log_on_failure  += USERID
        disable         = no
}
---------------------

@-desktop@で指定するサーバ名は適宜実際のマシン名等に変更する。 @--PasswordFile@で指定するパスワードファイル@/etc/vncpasswd@は準備しておく。 (もしくは「@--PasswordFile=/etc/vncpasswd@」の代わりに「@-SecurityTypes=None@」を指定することでVNCパスワードの確認ナシにできるが、外部に公開されるようなサーバでは注意!)

④xinetdで待ち受けるポート番号を指定する。

# vim /etc/services 
ポート番号の指定
↓記述
------------------------------------------
vnc             5900/tcp                        # Virtual Network Computing
------------------------------------------

⑤XDM認証を有効にする。

# vim /etc/gdm/custom.conf
↓記述
-------------------------------
# GDM configuration storage

[daemon]
KillInitClient=false

[security]

[xdmcp]
Enable=true

[greeter]

[chooser]

[debug]
-------------------------------

⑥OSの再起動を行い、正しく接続するか確認する。 ※gdmとxinetdの再起動でも大丈夫。

MacのTigerVNC Viewerでキー入力ができないとお嘆きの方に

以下の設定をするとキー入力できるようになる。 (macOS Sierraでの設定例)

  1. システム環境設定 ⇒ キーボード ⇒ 入力ソース
  2. 入力ソース一覧下の+ボタンを押す
  3. 左のリストで英語を選択、右のリストでABCを選択
  4. 追加ボタンを押す
  5. 入力ソース一覧で日本語をクリック
  6. 入力モード:英字のチェックボックスを外す

追伸

/etc/gdm/custom.conf@で@KillInitClient=false@指定してるけど、これの意味って何?

20171121自己解決

"Gnome Display Manager Reference Manual (Chapter 2. The Configuration Directory)":https://www.ibiblio.org/oswg/oswg-nightly/oswg/en_US.ISO_8859-1/articles/gdm-reference/gdm-reference/x135.html

⚠️ **GitHub.com Fallback** ⚠️