ディスプレイナンバーが抜けていたのを追加。(2012年 2月 16日 木曜日)
Fedora24、Fedora25に対応(2016年12月29日木曜日)

この記事はFedora 33, 32(もっと前もかも)では、もう古い情報なため役に立ちません。(2020年12月5日(土))
追記:VNCが使いたい場合は、LAN環境であれば[設定]→[共有]→[画面共有]機能を使えば、ホストの画面と同じ画面が操作できます。(2021年12月31(金))

VNCとは?

サーバーといえば、CUIというかコマンドを前提だと想像される方が多いようですが、 GUIなリモート操作もできちゃいます。そのうちの一つが、VNCサーバーです。

前提条件

前提条件として、ユーザー名をkenkenとし、ディスプレイナンバーを1とします。ディスプレイナンバーは任意ですが、一人で使っている場合は1でいいでしょう。

インストール

VNCに関するアプリをインストールしましょう。Fedoraでは、tigervncというものをつかいます。

su -c "yum install tigervnc tigervnc-server"

/etc/の設定

Fedora 15?14?より前のVNCの設定だと、 /etc/sysconfig/vncserversを設定していたので、このファイルを開いてみると、

# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service


/lib/systemd/system/vncserver@.service

Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Replace <USER> with the actual user name and edit vncserver
# parameters appropriately
# ("User=<USER>" and "/home/<USER>/.vnc/%H%i.pid")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`

とある。
なので、

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@\:1.service

とsystemd用のファイルをコピー。1のところは、ディスプレイナンバーで任意に数字を決められる。前提の所で言及したけど一人で使うなら1でOK。

この/etc/systemd/system/vncserver@:1.serviceファイルのUSERを自分のユーザー名に変更する。私のユーザー名kenkenを例に取ると、37、38行目を

User=<USER>

User=kenken

とし、

PIDFile=/home//.vnc/%H%i.pid

PIDFile=/home/kenken/.vnc/%H%i.pid

とすればOK。

VNCのパスワードの設定

VNCに接続するパスワードを設定します。VNCを使いたいユーザー権限でログインして、

vncpasswd
(パスワード入力:何も表示されない。)

とVNC用のパスワードを入力。セキュリティーを考慮するためには出来ればユーザーのパスワードとは異なるパスワードを設定しておくことをオススメします。

サービスの起動

前のvncserver@:1.serviceファイルの設定が済んだら、

sudo systemctl start vncserver@:1.service
sudo systemctl enable vncserver@:1.service

とする。上からVNCサービス起動、Linux起動時のサービス自動起動設定をしている。エラーメッセージが出る場合は【解決済み】Job for vncserver@:1.service failed because a timeout was exceeded.から解決。

firewalldの設定

firewalldコマンドで

sudo firewall-cmd --addservice vnc-server --permanent
sudo firewall-cmd --reload

としてVNCサーバーのポートを開きます。

確認

とりあえず、VNCサーバーのサーバーを立てているマシンで、

vncviewer localhost:1

として、パスワードを入力してGNOMEが表示されたらOK。
vnc-viewer

確認が終わったら終了させておく。

接続

今度はクライアントから接続します。[アプリケーション]→[インターネット]→[Tiger VNC Viewer]を開き、サーバーのIPアドレス:ディスプレイナンバー(1)を入力(例192.168.1.11:1)、パスワード入力。これで、VNCが利用できるはず。 サーバーのIPアドレスは、 サーバー上で

ifconfig
p5p1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::225:22ff:fea0:9f67/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1492  Metric:1
          RX packets:447494 errors:0 dropped:0 overruns:0 frame:0
          TX packets:549463 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:132690793 (126.5 MiB)  TX bytes:464729710 (443.2 MiB)
          Interrupt:41 Base address:0xa000

のinet addrの後のものを入力。

クライアントがWindowsでもVNCビューアーをインストールすれば動くと思う。試してないけど。

ここで、一個注意して欲しいのは、GNOMEデスクトップが表示されるけどLinuxではデスクトップそのものを表示するのではなく、もうひとつGNOMEデスクトップが作られて表示されるという事。なので、多重起動が禁止されているアプリケーション、特にfirefoxがロックされちゃいます。なので、サーバー側でfirefoxを使っていたら、きちんと終了させておきましょう。また、VNCのクライアント側でも使い終わったら終了させておくこと。 どうしても、どこで起動してるか分からなくなったら、

killall firefox

としてfirefoxを終了させます。このコマンドは正常終了なので、通常のfirefoxを終了させることと同じ動作ですが、状況によっては強制終了の扱いになってしまうことがあるので、要注意。

うまく表示されない場合

ここまでの操作でVNCサーバーがきちんと動いていると思いますが、上手く接続できない場合は以下を確認しましょう。

  • 互いにネットワークがつながっているか。pingでチェック
  • VNCサーバーサービスが起動してるか。
  • iptablesでポートを開いているか。一度、iptablesを止めてみてVNCで見れるか確認してみてみるのもあり。
  • IPアドレスがあっているか。
  • パスワードがユーザーのパスワードでなく、VNC用のパスワードか。

鯖立てしたくて買いました。
Ubuntuな人は、
知識ゼロから始めるLinuxサーバーの作り方 (日経BPパソコンベストムック)
知識ゼロから始めるLinuxサーバーの作り方 (日経BPパソコンベストムック)
クチコミを見る


Fedoraな人は古いけど、 誰でもLinuxサーバーを超簡単に作れる本(DVD-ROM付) (日経BPパソコンベストムック)
誰でもLinuxサーバーを超簡単に作れる本(DVD-ROM付) (日経BPパソコンベストムック)
クチコミを見る


Linux 始めたいなら(動作保証をするものではありません。)