kilin> how to> VNC for CentOS, Windows, Android

Linux/Windows/Android VNC

(2011.8.27-2016.2.7)

VNCでデスクトップを操作する。
(環境) CentOS 5, 6, 7, WindowsXP, Windows 7(32, 64), Android

Linux VNCサーバー

(以下プロンプトが#ならroot,$なら普通のユーザー)

インストール:
# yum install vnc-server
でインストール完了。
パスワードの作成:
各ユーザ一でログインしてvncのパスワードを作る。パスワードはホームディレクトリの.vnc/に保存される。
# vncpasswd
Password:
Verify:
設定ファイルの編集:
(CentOS7の場合)
まずディスプレイ番号を決める。
# vncserver
でvncサーバーをデフォルトで起動し,表示されるメッセージを読んで,起動されるディスプレイ番号を調べる。この番号をディスプレイ番号にする。以下この番号をNとかく。
# vncserver -kill :N
でvncサーバーを停止する。
設定ファイルをコピーする。
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:N.service
コピーしたファイル中の<USER>を実際のユーザ名に変更する。ホームディレクトリを記述しているところは,実際のホームディレクトリになるように。画面サイズは/usr/bin/vncserver %i のあとに -geometry 1280x1024 のように追加する。
(CentOS5, 6の場合)
一度VNCサーバを起動して,ユーザ毎の設定ファイルをつくる。
# /etc/rc.d/init.d/vncserver start
# /etc/rc.d/init.d/vncserver stop
で, .vnc/ に xstartup という名前のファイルができる。このファイルをウインドウマネージャーにgnomeを使うように編集する。2行コメントアウトして,1行追加。
# vi xstartup

#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
gnome-session &
設定ファイルを編集する。
# vi /etc/sysconfig/vncservers
以下の2行(サンプル)をコメントアウトして,
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"
その下にvncでログインしたいユーザを書く。-localhostははずす。800x600はvncで表示したい画面サイズ。
(CentOS 6の場合 -nohttpdをつけない)
VNCSERVERS="2:root 3:fujiwara 4:takahashi"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp"
VNCSERVERARGS[3]="-geometry 800x600 -nolisten tcp"
VNCSERVERARGS[4]="-geometry 800x600 -nolisten tcp"
(CentOS 5の場合  -nohttpdをつける)
VNCSERVERS="2:root 3:fujiwara 4:takahashi"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd"
VNCSERVERARGS[3]="-geometry 800x600 -nolisten tcp -nohttpd"
VNCSERVERARGS[4]="-geometry 800x600 -nolisten tcp -nohttpd"
サーバーの開始
(CentOS 7の場合)
#systemctl daemon-reload
#systemctl enable vncserver@:1
#systemctl restart vncserver@:1
(CentOS 5,6の場合)
# chkconfig vncserver on

Windows VNCクライアント

SSHポート転送:
まず,Teratermで,SSHポート転送の設定をする。メニューの[設定]-[SSH転送]で[SSHポート転送]ダイアログボックスを開き,[追加]ボタンをクリックして,次のように設定する。
これは,SSH接続を通じて,ローカルのポート5902がリモート(サーバ)のポート5902に接続されるという意味。必要なだけポートを追加したら[設定][設定の保存]しておく。これでTeratermでサーバにSSHでログインするたびに,ポートの転送が行われるようになる。なお,ローカルのポート番号はリモートと同じにしなくてもよい。
Teratermを起動して,VNCサーバをインストールしたマシンにログインしておく。
VNCビューア:
UltraVNCなどのVNCソフトをインストールして,VNCビューアを起動してlocalhost:5902に接続する。パスワードは先に設定したvncのパスワード。これでvncビューアにCentOSのgnomeデスクトップが表示される。5902は番号2のユーザ。番号3のユーザのポート番号は5903となる。
なお,UltraVNCビューアでは,タイトルバーを右クリックして,[Save connection info as]で,パスワードも含めた接続情報を保存できる。次回からは,このファイルをダブルクリックすれば,パスワードなしで一発接続できる。
AndroidのVNCビューアは,PocketCloudがお勧め。

Windows VNCサーバ

UltraVNCなどのVNCソフトをインストールして,ローカル接続ができるようにしてVNCサーバをサービスとして起動する。UltraVNCの場合,[Admin Properties]の[Allow Loopback Connections]をチェックする。
クライアントからの接続:
SSH転送を使う場合は,サーバ側WindowsにSSHDをインストールしてサービスとして起動しておく。VNCビューアからの接続はlocalhost:5900。
OpenVPNを使う場合は,サーバーにもクライアントにもOpenVPNをインストールしてサービスとして起動しておけば,VPN上のサーバのIPアドレス(プライベート)でVNCビューアから接続できる。

ファイアーウオールについて

ここでは,SSHポート転送またはOpenVPNを使っているので,サーバーもクライアントもファイアーウオールの設定をVNC用にいじる必要は無い。

参考

VNCを利用してCentOSを操作するための設定(http://blog.dicecream.net/2009/10/vnccentos.php) 2011.8現在
VNCサーバ構築 (http://www.pochinet.org/linuxZ0206.htm) 2011.8現在