VNC for Linux / Windows / Android

(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 のように追加する。

(CentOS 5, 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ビューアは,RealVNC❐がお勧め。

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用にいじる必要は無い。

参考

  1. VNCを利用してCentOSを操作するための設定(http://blog.dicecream.net/2009/10/vnccentos.php) 2011.8現在

  2. VNCサーバ構築 (http://www.pochinet.org/linuxZ0206.htm) 2011.8現在