さくら VPS に VNC と GNOME を入れて、Mac から接続する(SSH ポートフォワーディング含む)
さくら VPS に vnc-server と GNOME デスクトップを入れて Mac から接続してみました。下記のように GUI で操作できます。
さくら VPS はサーバ用途で使っている人がほとんどだと思うので、どれだけ需要があるかは分かりませんが、メモしておきます。ちなみにさくら VPS の OS は CentOS 5.5、クライアントは MacOSX 10.6 Snow Leopard です。
少し長いので目次から。
**さくら VPS に VNC と GNOME を入れて、Mac から接続する方法(SSH ポートフォワーディング含む)
+vnc-server 及び GNOME デスクトップのインストール +VNC 接続用ユーザの作成 +ディスプレイ番号、ユーザ、画面サイズ等の設定 +vnc-server 起動時の設定 +vnc-server のサービス再起動 +サーバ起動時に vnc-server も起動するようにする +Mac から VNC 接続(暗号化なし) +Mac から VNC 接続(SSH ポートフォワーディング) <<
*1. vnc-server 及び GNOME デスクトップのインストール
サーバ側で yum groupinstall コマンドを使って vnc-server と GNOME デスクトップをインストールします。念のため、事前にグループ名の確認をば。
||
yum grouplist
... GNOME Desktop Environment ... X Window System ... ||<
下記コマンドを root 権限で実行します。なお「vnc-server」は「X Window System」の中に含まれています。
||
yum groupinstall "X Window System" "GNOME Desktop Environment"
...(5-10分くらいかかります) ||<
*2. VNC 接続用ユーザの作成
VNC で接続するためのユーザを作成します。ここでは例として user01 を作成しています。既に存在するユーザで接続する場合にはこのステップは必要ありません。
||
useradd user01
passwd user01
Changing password for user user01. New UNIX password:(パスワードを入力) Retype new UNIX password:(パスワードを再度入力) passwd: all authentication tokens updated successfully. ||<
*3. ディスプレイ番号、ユーザ、画面サイズ等の設定
vnc-server の設定ファイルを編集します。ここで画面サイズなどを設定できます。
||
vi /etc/sysconfig/vncservers
||<
設定ファイル中に下記を追記してください
|| VNCSERVERS="1:user01" ## ディスプレイ番号:VNC を利用するユーザ名 VNCSERVERARGS[1]="-geometry 1024x768 -nohttpd" ## ディスプレイ番号、画面サイズ、パラメータ ||<
パラメータの内容は(設定ファイル中にも書かれていますが)下記のとおりです。
:-nolisten tcp:TCP 接続をさせない :-nohttpd:Web ベースの VNC クライアントからの接続をさせない :-localhost:リモート接続をさせない
なお、VNC クライアントから接続時に用いる TCP ポート番号は「5900 + ディスプレイ番号」となります。上記設定では 5901 です。
|| (設定ファイル /etc/sysconfig/vncservers)
The VNCSERVERS variable is a list of display:user pairs.
Uncomment the lines below to start a VNC server on display :2
as my 'myusername' (adjust this to your own). You will also
need to set a VNC password; run 'man vncpasswd' to see how
to do that.
#
DO NOT RUN THIS SERVICE if your local area network is
untrusted! For a secure way of using VNC, see
<URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.
Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
Use "-nohttpd" to prevent web-based VNC clients connecting.
Use "-localhost" to prevent remote VNC clients connecting except when
doing so through a secure tunnel. See the "-via" option in the
`man vncviewer' manual page.
VNCSERVERS="2:myusername"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"
設定を追記
VNCSERVERS="1:user01" ## ディスプレイ番号: VNC 接続ユーザ名 VNCSERVERARGS[1]="-geometry 1024x768 -nohttpd" ## ディスプレイ番号、画面サイズ、パラメータ ||<
*4. vnc-server 起動時の設定
VNC を利用するユーザに切り替えて VNC サーバを起動します。初回起動時に起動設定ファイルが作成されます。
||
su user01
$ vncserver :1 ## :1 はディスプレイ番号
You will require a password to access your desktops.
Password: Verify: xauth: creating new authority file /home/inouetakuya/.Xauthority
New 'www00000.sakura.ne.jp:1 (user01)' desktop is www00000u.sakura.ne.jp:1
Creating default startup script /home/user01/.vnc/xstartup Starting applications specified in /home/user01/.vnc/xstartup Log file is /home/user01/.vnc/www00000u.sakura.ne.jp:1.log ||<
次に、作成された起動設定ファイルを編集し、GNOME が利用できるようにします。
|| $ vi .vnc/xstartup ||<
下記のとおり編集してください。
||
!/bin/sh
Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic &
下記 2行をコメントアウト
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
下記を追加
gnome-session & ||<
*5. vnc-server のサービス再起動
起動時の設定ファイルを編集したので、vnc-server のサービスを再起動します(root 権限で)
|| $ su - Password:
service vncserver restart
Shutting down VNC server: 1:user01 [ OK ] Starting VNC server: 1:user01 New 'www00000u.sakura.ne.jp:1 (user01)' desktop is www00000u.sakura.ne.jp:1
Starting applications specified in /home/user01/.vnc/xstartup Log file is /home/user01/.vnc/www00000u.sakura.ne.jp:1.log
[ OK ]
||<
*6. サーバ起動時に vnc-server も起動するようにする
何らかの理由でサーバを再起動させたときにいちいち vnc-server を手動で起ち上げるのも面倒なので、自動で起動するようにしておきます。
||
chkconfig vncserver on ## root 権限
chkconfig --list vncserver ## 念のため確認
vncserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off ||<
さて、いよいよ Mac から接続します。フツーに(暗号化せずに)VNC サーバへ接続するだけならば、Mac 標準の「画面共有」で事足ります。
Finder のメニューから「移動 > サーバへ接続」。サーバアドレス欄に
を入力して「接続」をクリックします。
途中でパスワードを訊かれますので、VNC を利用するユーザ(ここでは user01)のパスワードを入力します。
暗号化してないので、確認ダイアログが表示されます。ここでは「接続」を選択。
GUI のデスクトップが表示されたら接続成功です。なお、接続を終了するときは、画面共有メニューの「接続 > 閉じる」をしてください。
**(おまけ)
余談ですが、Windows のリモートデスクトップ接続と同じ感覚でユーザのログアウトをすると、デスクトップアイコンが非表示になったまま、にっちもさっちもいかなくなりました(vnc-server のサービス再起動をすれば大丈夫です)
|| (サーバ側で root で下記コマンドを実行)
service vncserver restart
||<
*8. Mac から VNC 接続(SSH ポートフォワーディング)
さて、ここまでで一応 VNC で接続できるようになったものの、通信が暗号化されていないのでいささか不安が残ります。
そこで、SSH ポートフォワーディングという技術の出番です。サーバへ SSH へトンネルをつくり、通信はそこを利用します。下記のようなイメージです。
まずは、Mac からサーバへ SSH でトンネルを作成します。Mac のターミナルを起動して下記コマンドを実行してください。なお、コマンド中の 10022 というのは Mac 側の任意のポート番号です。トンネリングするときに使います。
|| $ ssh -L 10022:xxx.xxx.xxx:5901 user01@xxx.xxx.xxx ||<
$ ssh -L (クライアント側の任意のポート番号):(サーバのホスト名または IP アドレス):(サーバ側のポート番号) (接続ユーザ名)@(サーバのホスト名または IP アドレス) <<
そして、SSH のトンネルを通って VNC サーバへ接続、したいところですが、Mac の画面共有では SSH ポートフォワーディングできませんでした(下記のメッセージがひょうじされました)
代わりに Mac 用 VNC クライアントの定番「Chicken of VNC」をインストールします。
-Chicken of the VNC | Free software downloads at SourceForge.net
インストール後、アプリを起動して「Connection > New Connection」
Host: localhost:10022(先ほど指定した任意のポート番号) Password: VNC を利用するユーザ(ここでは user01)のパスワード <<
上記を入力して「接続」をクリック。
おぉ!きました!
ちなみに僕がいま使っているのは「さくらの VPS 512」という一番安いプランですが、同じ Mac に入れている VMWare Fusion 4 の Windows 7 と同じくらい、ストレスなく動作してくれています(あまり重い処理はやっていませんが)
以上です。よろしければ参考にしてください。ではでは。
**参考サイト
-評判のさくらのVPSを使ってVNCを使ってリモートデスクトップの環境を設定してみる | レンタルサーバー・自宅サーバー設定・構築のヒント -SSH ポートフォワーディング -SSH ポートフォワーディングでVNCを使う