CentOSGUI - osakichi/memo GitHub Wiki
マルチユーザでVNCによるリモートGUIが利用できるCentOS環境の構築方法。
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
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の再起動でも大丈夫。
以下の設定をするとキー入力できるようになる。 (macOS Sierraでの設定例)
- システム環境設定 ⇒ キーボード ⇒ 入力ソース
- 入力ソース一覧下の+ボタンを押す
- 左のリストで英語を選択、右のリストでABCを選択
- 追加ボタンを押す
- 入力ソース一覧で日本語をクリック
- 入力モード:英字のチェックボックスを外す
/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