おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

さくら VPS に VNC と GNOME を入れて、Mac から接続する(SSH ポートフォワーディング含む)

さくら VPSvnc-server と GNOME デスクトップを入れて Mac から接続してみました。下記のように GUI で操作できます。

さくら VPS はサーバ用途で使っている人がほとんどだと思うので、どれだけ需要があるかは分かりませんが、メモしておきます。ちなみにさくら VPS の OS は CentOS 5.5、クライアントは MacOSX 10.6 Snow Leopard です。

少し長いので目次から。

**さくら VPSVNCGNOME を入れて、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 ||<

*7. Mac から VNC 接続(暗号化なし)

さて、いよいよ Mac から接続します。フツーに(暗号化せずに)VNC サーバへ接続するだけならば、Mac 標準の「画面共有」で事足ります。

Finder のメニューから「移動 > サーバへ接続」。サーバアドレス欄に

|| vnc://(サーバのホスト名または IP アドレス):TCP ポート番号 ||<

を入力して「接続」をクリックします。

途中でパスワードを訊かれますので、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 ポートフォワーディングできませんでした(下記のメッセージがひょうじされました)

代わりに MacVNC クライアントの定番「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を使う