さくらVPSのMintにリモートデスクトップで接続

さくらVPSにLinux Mint 14 Nadia (64bit) をインストール - 適当な事を適当にかいていくブログからの続き。
さくらVPSのMintにリモートデスクトップで接続できるようにする。

Mintをリモートデスクトップで繋ぐには

  • vinoを使う
  • vncserverを使う

の二通りがある。今回はvncserverを使用した。

VNCサーバーのインストールと起動

まず、VNCサーバーをインストール

$ sudo apt-get install vnc4server

VNCサーバーを起動

$ vncserver

パスワードを聞かれるので、パスワードを入力。

これで、Macなら⌘+Kで、
vnc://hostipaddress:5901
で接続できる。

ただし、このまま接続すると、暗号化されていないため、パスワードなどがダダ漏れになる。

sshポートフォワーディング

暗号化通信を行うため、sshポートフォワーディングを行う。

ssh -L 10022:hostipaddress:5901 -p 10022 hoge@hostipaddress

その後、
vnc://localhost:10022
に接続する。

これで、セキュアな通信が可能となる。

ちなみに、sshで -p 10022 オプションつけているのは、10022以外のポートではssh通信できないようにしているため。
標準(ポート:22)なら -p はつけなくて良い。
また、sshd_config に Port 5901 を追記することを忘れずに。

/etc/sysconfig/vncservers の設定

このまま繋いでも、真っ黒な画面が表示されるだけだと思う。これはxfceが起動していないから。
そこで、~/.vnc/xstartup に下記を追記する。

exec /bin/sh /etc/xdg/xfce4/xinitrc &

また、複数ユーザーを指定したい場合は、

mkdir -p /etc/sysconfig/
sudo vi /etc/sysconfig/vncservers

で、vncservers ファイルを作成し、

VNCSERVERS="1:user1 2:user2 3:user3"
VNCSERVERARGS[1]="-geometry 1280x992 -depth 16"
VNCSERVERARGS[2]="-geometry 1280x992 -depth 16"
VNCSERVERARGS[3]="-geometry 1280x992 -depth 16"

を記述する。 -geometryが解像度で、depthがビットカラー。なぜかビットカラーが32では黒い画面のままだった。

サービスの登録を行う。

/etc/init.d/vncserver を作成し、以下のように編集する。

 #!/bin/bash
 #
 # chkconfig: - 91 35
 # description: Starts and stops vncserver. \
 # used to provide remote X administration services.
 
 # Source function library.
 # . /etc/init.d/functions
 
 # Source networking configuration.
 # . /etc/sysconfig/network
 
 # Check that networking is up.
 # [ ${NETWORKING} = "no" ] && exit 0
 
 unset VNCSERVERARGS
 VNCSERVERS=""
 [ -f /etc/sysconfig/vncservers ] && . /etc/sysconfig/vncservers
 
 prog=$"VNC server"
 
 start() {
 REQ_USER=$2
 echo -n $"Starting $prog: "
 ulimit -S -c 0 >/dev/null 2>&1
 RETVAL=0
 for display in ${VNCSERVERS}
 do
 export USER="${display##*:}"
 if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
 echo -n "${display} "
 unset BASH_ENV ENV
 DISP="${display%%:*}"
 export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
 su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
 fi
 done
 }
 
 stop() {
 REQ_USER=$2
 echo -n $"Shutting down $prog: "
 for display in ${VNCSERVERS}
 do
 export USER="${display##*:}"
 if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
 echo -n "${display} "
 unset BASH_ENV ENV
 export USER="${display##*:}"
 su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
 fi
 done
 "\n"
 echo "Vncserver Stopped"
 }
 
 # See how we were called.
 case "$1" in
 start)
 start $@
 ;;
 stop)
 stop $@
 ;;
 restart|reload)
 stop $@
 sleep 3
 start $@
 ;;
 condrestart)
 if [ -f /var/lock/subsys/vncserver ]; then
 stop $@
 sleep 3
 start $@
 fi
 ;;
 status)
 status Xvnc
 ;;
 *)
 echo $"Usage: $0 {start|stop|restart|condrestart|status}"
 exit 1
 esac

パーミッションを変更。

$ sudo chmod a+x /etc/init.d/vncserver