文書の過去の版を表示しています。
VNC(Virtual Network Computing)
VNC(Virtual Network Computing)は、リモートデスクトップを実現するクロスプラットフォームのソフトウェアである。
VNCサーバが動作するOS(Windows CE/98/Me/2000/XP/2003、Linux、Solaris)をVNCクライアントが動作する
OS(Windows CE/98/Me/2000/XP/2003、Linux、Solaris、Javaが作動する全てのOS、μVNCやiVNCは携帯用)
から遠隔操作することができる。
TigerVNC (Tiger Virtual Network Computing)
インストール
$ sudo yum install tigervnc-server
メタデータの期限切れの最終確認: 0:16:48 時間前の 2022年08月28日 04時04分24秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== インストール: tigervnc-server x86_64 1.12.0-6.fc36 updates 259 k 依存関係のインストール: tigervnc-selinux noarch 1.12.0-6.fc36 updates 24 k トランザクションの概要 ======================================================================================================================== インストール 2 パッケージ ダウンロードサイズの合計: 284 k インストール後のサイズ: 682 k これでよろしいですか? [y/N]: y パッケージのダウンロード: (1/2): tigervnc-selinux-1.12.0-6.fc36.noarch.rpm 32 kB/s | 24 kB 00:00 (2/2): tigervnc-server-1.12.0-6.fc36.x86_64.rpm 70 kB/s | 259 kB 00:03 ------------------------------------------------------------------------------------------------------------------------ 合計 60 kB/s | 284 kB 00:04 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 scriptletの実行中: tigervnc-selinux-1.12.0-6.fc36.noarch 1/2 インストール中 : tigervnc-selinux-1.12.0-6.fc36.noarch 1/2 scriptletの実行中: tigervnc-selinux-1.12.0-6.fc36.noarch 1/2 インストール中 : tigervnc-server-1.12.0-6.fc36.x86_64 2/2 scriptletの実行中: tigervnc-server-1.12.0-6.fc36.x86_64 2/2 検証 : tigervnc-selinux-1.12.0-6.fc36.noarch 1/2 検証 : tigervnc-server-1.12.0-6.fc36.x86_64 2/2 インストール済み: tigervnc-selinux-1.12.0-6.fc36.noarch tigervnc-server-1.12.0-6.fc36.x86_64 完了しました!
$ firewall-cmd --list-services
dhcpv6-client mdns samba-client ssh
$ cat /usr/lib/firewalld/services/vnc-server.xml
<?xml version="1.0" encoding="utf-8"?> <service> <short>Virtual Network Computing Server (VNC)</short> <description>A VNC server provides an external accessible X session. Enable this option if you plan to provide a VNC server with direct access. The access will be possible for displays :0 to :3. If you plan to provide access with SSH, do not open this option and use the via option of the VNC viewer.</description> <port protocol="tcp" port="5900-5903"/> </service>
$ sudo firewall-cmd --permanent --add-service=vnc-server
success
$ sudo firewall-cmd --reload
success
$ firewall-cmd --list-services
dhcpv6-client mdns samba-client ssh vnc-server
$ cat << "EOF" | sudo tee -a /etc/tigervnc/vncserver-config-defaults session=gnome geometry=1366x768 EOF
session=gnome geometry=1366x768
$ echo ":1=tomoyan" | sudo tee -a /etc/tigervnc/vncserver.users
:1=tomoyan
$ sudo systemctl enable --now vncserver@:1 $ systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2022-10-07 10:26:31 JST; 1min 29s ago Process: 2756 ExecStartPre=/usr/libexec/vncsession-restore :1 (code=exited, status=0/SUCCESS) Process: 2768 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS) Main PID: 2775 (vncsession) Tasks: 0 (limit: 19016) Memory: 1016.0K CPU: 38ms CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 2775 /usr/sbin/vncsession tomoyan :1 10月 07 10:26:31 WICKED-BEAT systemd[1]: Starting vncserver@:1.service - Remote desktop service (VNC)... 10月 07 10:26:31 WICKED-BEAT systemd[1]: Started vncserver@:1.service - Remote desktop service (VNC).
Xvnc の設定(xinetd 編)
この方法では、接続要求が発生するごとにメモリーを消費するので経済的です。この方法では、接続するとログイン画面表示されるので、ユーザーとパスワード入力してログインします。
ルートのログインを許可することも可能ですが、標準の設定ではそのようにはなっていないのでおすすめはしません。
パッケージのインストール
- スーパーサーバー(xinetd)のパッケージをインストールする。
$ sudo yum install xinetd
- リモートデスクトップ(vnc)のパッケージをインストールする。
CentOS$ sudo yum install vnc vnc-server
Fedora
$ sudo yum install tigervnc-server-minimal
メタデータの期限切れの最終確認: 3:23:49 時間前の 2022年08月28日 00時36分21秒 に実施しました。 パッケージ tigervnc-server-minimal-1.12.0-6.fc36.x86_64 は既にインストールされています。 依存関係が解決しました。 行うべきことはありません。 完了しました!
設定と反映
- サービスのポートを指定するために、以下の設定ファイルを修正する。(行追加)
$ sudo vi /etc/services
vncserver 5900/tcp # VNC Server
- スーパサーバーが起動するプログラムを設定するために、以下の設定ファイルを作成する。
$ sudo vi /etc/xinetd.d/vncserver
service vncserver { disable = no nice = 10 flags = REUSE socket_type = stream wait = no user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --securitytypes=none log_on_success += DURATION log_on_failure += HOST }
注意:
service vncserver の部分は /etc/services に追記したサービス名と一致していなければならない。
画面サイズ 1600×960 はお好みに応じて変更してください。 - vnc のパスワードファイルを作成する。
$ sudo vncpasswd /etc/vncserver_passwd Password: <-- パスワードを入力 Verify: <-- パスワードを入力
- Xvnc がパスワードファイルを参照できるようにパーミッションを設定する。
$ sudo chmod 644 /etc/vncserver_passwd
- GDM(Gnome Display Manager)の設定を変更するために、以下の設定ファイルを修正する。(該当セクションに以下の内容を追記)
$ sudo vi /etc/gdm/custom.conf
[daemon] RemoteGreeter=/usr/libexec/gdmgreeter [xdmcp] Enable=true # XDM認証有効化
おすすめしないが、管理者ログインを許可したいのなら以下の設定を追加する。
[security] AllowRemoteRoot=true
Fedoraの場合は以下のように修正する。
[security] DisallowTCP=false [xdmcp] Enable=true # XDM認証有効化
- サービスのポートをファイヤウォールで許可するために、以下の設定ファイルを修正する。
/etc/sysconfig/iptables (行追加)-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT
- OS 起動時にスーパーサーバーが自動起動するように、以下のコマンドを実行する。
$ sudo chkconfig xinetd on
- 設定の変更を反映させるために、以下のコマンドを実行する。
CentOS6、Fedoraの場合$ sudo restart prefdm $ sudo service xinetd restart $ sudo service iptables restart
CentOS 5 の場合はrestart prefdmではなく以下を実行する。
$ sudo gdm-restart $ sudo service xinetd restart $ sudo service iptables restart
Fedora 16
$ sudo systemctl restart xinetd.service
Fedora 18 以降
$ sudo systemctl restart gdm.service
- クリップボードを共有するために、ユーザーがログオンした際に以下のコマンドが自動実行されるように設定する。
メニューより [システム]-[設定]-[他の個人設定]-[セッション] を開いて、自動起動するプログラムに以下のコマンドを追加する。vncconfig -nowin
トラブルシューティング
CentOS 6で以下のようなトラブルが発生する場合:
- vnc 経由で管理者権限を必要とするアプリケーションが起動しない。
- スーパーユーザーでアプリケーションを実行すると以下のエラーが発生する。
No protocol specified Could not parse arguments: ディスプレイをオープンできません:
解決方法:
- /etc/X0.hosts を作成してホスト名を追加する。
※“green.fireball.local:1.0” の場合は X1.hosts のようにディスプレイ番号に応じて作成する必要がある。$ sudo vi /etc/X0.hosts
/etc/X0.hosts の内容
localhost
- prefdm を再起動する。
$ sudo restart prefdm
CentOS 5で以下のようなトラブルが発生する場合:
- vnc 経由で管理者権限を必要とするアプリケーションが起動しない。
- スーパーユーザーでアプリケーションを実行すると以下のエラーが発生する。
Xlib: connection to "green.fireball.local:0.0" refused by server Xlib: No protocol specified
解決方法:
- /etc/X0.hosts を作成してホスト名を追加する。
※“green.fireball.local:1.0” の場合は X1.hosts のようにディスプレイ番号に応じて作成する必要がある。$ sudo vi /etc/X0.hosts
/etc/X0.hosts の内容
green.fireball.local
- gdm を再起動する。
$ sudo gdm-restart
Xvnc+xinetd でセッション保持設定
リモートサーバーに接続して長時間処理などを実行しておきたい場合は、Xvnc のセッションが保持されるように設定しておくと便利である。
以下では前述の設定に追記することを前提に説明する。
設定と反映
- セッション保持用のサービスのポートを指定するために、以下の設定ファイルを修正する。
$ sudo vi /etc/services (行追加)
vncsrvkeep01 5901/tcp # VNC Server(keep session 01) vncsrvkeep02 5902/tcp # VNC Server(keep session 02) vncsrvkeep03 5903/tcp # VNC Server(keep session 03) vncsrvkeep04 5904/tcp # VNC Server(keep session 04) vncsrvkeep05 5905/tcp # VNC Server(keep session 05)
- スーパサーバーが起動するプログラムを設定するために、以下の設定ファイルを修正する。
$ sudo vi /etc/xinetd.d/vncserver (設定追加)
service vncsrvkeep01 { disable = no nice = 10 flags = REUSE socket_type = stream wait = yes user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd log_on_success += DURATION log_on_failure += HOST } service vncsrvkeep02 { disable = no nice = 10 flags = REUSE socket_type = stream wait = yes user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd log_on_success += DURATION log_on_failure += HOST } service vncsrvkeep03 { disable = no nice = 10 flags = REUSE socket_type = stream wait = yes user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd log_on_success += DURATION log_on_failure += HOST } service vncsrvkeep04 { disable = no nice = 10 flags = REUSE socket_type = stream wait = yes user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd log_on_success += DURATION log_on_failure += HOST } service vncsrvkeep05 { disable = no nice = 10 flags = REUSE socket_type = stream wait = yes user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd log_on_success += DURATION log_on_failure += HOST }
注意:
service vncsrvkeep01~05 の部分は /etc/services に追記したサービス名と一致していなければならない。
画面サイズ 1600×960 はお好みに応じて変更してください。 - vnc のパスワードファイルを作成する。
$ sudo vncpasswd /etc/vncserver_passwd Password: <-- パスワードを入力 Verify: <-- パスワードを入力
- Xvnc がパスワードファイルを参照できるようにパーミッションを設定する。
$ sudo chmod 644 /etc/vncserver_passwd
- サービスのポートをファイヤウォールで許可するために、以下の設定ファイルを修正する。
CentOS$ sudo vi /etc/sysconfig/iptables (行修正)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5905 -j ACCEPT
Fedora
$ sudo firewall-cmd --permanent --add-port=5901-5905/tcp
- 設定の変更を反映させるために、以下のコマンドを実行する。
CentOS$ sudo gdm-restart $ sudo service xinetd restart $ sudo service iptables restart
Fedora
$ sudo systemctl restart gdm.service $ sudo systemctl restart xinetd.service $ sudo firewall-cmd --reload
VNCサーバの設定(vncserver サービス編)
この方法では、ユーザー1人につきポート5901より1ポートを消費します。また、VNCSERVERARGSの定義数が増えるとメモリーを多く消費します。
設定ファイルの修正
/etc/sysconfig/vncservers の以下の箇所を参考に最終行に設定を追加
# VNCSERVERS="2:myusername" # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost" VNCSERVERS="1:tomoyan 2:hogehoge" VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd" VNCSERVERARGS[2]="-geometry 1280x1024 -nolisten tcp -nohttpd"
-localhost オプションが指定されているとリモートから接続することができないので注意。
VNCSERVERS
VNCSERVERS="ディスプレイ番号: ユーザ名"
VNCSERVERARGS
VNCSERVERARGS[ディスプレイ番号]="-geometry 1024x768 -nolisten tcp -nohttpd"
VNCパスワードの設定
$ su - tomoyan パスワード: $ vncpasswd Password: Verify: $ su - hogehoge パスワード: $ vncpasswd Password: Verify:
VNCサーバの起動とウィンドウマネージャの設定
$ su - パスワード: # service vncserver start VNC サーバー を起動中: 1:tomoyan VNC サーバー を起動中: 2:hogehoge ~省略~
VNCサーバが起動すると以下の設定ファイルが作成されるので設定を変更する。
/home/tomoyan/.vnc/xstartup
#vncconfig -iconic & vncconfig -nowin & #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & # twm & → 最終行の twm & をコメントアウト gnome-session & # → gnomeを起動するように変更
/home/hogehoge/.vnc/xstartup も同様に修正する。
VNCサーバを再起動すると設定が反映される。
# service vncserver restart
ファイアウォールの設定
VNCサーバを利用するには以下のポートの開放が必要である。
tcp port 5900 マシン コンソールに接続する場合 tcp port 5901 ディスプレイ番号:1 に接続する場合 tcp port 5902 ディスプレイ番号:2 に接続する場合 ...
参考文献
第13章 TigerVNC Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Fedora 34 : VNC サーバーの設定 : Server World
CentOS8.3でVNCサーバをセットアップする手順 - Qiita
VNC Serverをxinetd経由で立てる方法 [Fedora 10] - Kerosoft : Modus Operandi
伊勢的新常識 - xinetd + VNC でリモートデスクトップ
VNC-server
Vnc & Gdm [Archive] - FedoraForum.org
Remote Login with GDM and VNC on Fedora 11 << Code Ghar