LinuxをSSHコンソールでリモートコントロールすることはごく一般的だが、一部のサーバー・デーモン等でGUIのコンフィギュレーション・ツールを利用したほうが効率のいい場合があります。GUIでリモートコントロールしたい場合に使用される最もポピュラーな方法がVNCサーバーを利用した方法ですが、VNC用のポートをオープンするのはセキュリティー上お薦めできません。
今回はLinuxサーバーをSSHポートフォワーディングを使用したトンネル接続でVNCコントロールする方法を使用してみます。
最近のディストリビューションでは標準でVNCがインストールされるパッケージオプションも多く、少なくとも大抵のディストリビューションのインストーラーにRPMパッケージは含まれています。今回の設定も CentOS6 とそれに含まれている VNCサーバーで設定をしてみました。従ってVNCサーバーは標準のRPMインストールです。
まずはVNCサーバーの設定ですが、デーモンとしてサービス起動するとGUIが常駐することになるので普通はやりません。xinetd経由で起動することもできますがサーバーの設定作業を楽にすることを目的とし、一般ユーザーに解放するものではないので使用するときだけ手動で起動することにします。
VNC の起動コマンドは「vncserver」ですがLinuxのようなマルチデスクトップのOSではこれにスクリーン番号のオプションを付けて起動します。何もオプションを付けなかった場合はスクリーン0として扱われ、これは「vncserver :0」というコマンドを実行したのと同じになります。クライアントが接続出来るスクリーンは1つに限定されるため、複数のユーザーで同じスクリーンを同時使用することはできません。従って、複数の人間がアクセスする可能性がある場合はユーザーごとにスクリーンを分けておくことが賢明です。
また、ここで扱うスクリーン番号はVNCのポート番号に連動しており、0ならば5900、1ならば5901のようになります。後ほど設定するSSHのポートフォワーディングで使用するので覚えておきましょう。
1. 起動コマンドのエリアス設定
各ユーザーごとに使用するタイミングで起動、終わったら終了させることを前提に各ユーザーの「.bashrc」ファイルにコマンドエリアスを作成しておきます。
編集ファイル:/home/ユーザー/.bashrc
最終行に以下の2行を追加(スクリーン番号は任意に変更する)。
alias vncstart=’vncserver :1′
alias vnckill=’vncserver -kill :1′
ここでは起動を「vncstart」、終了を「vnckill」というコマンドに設定していますが任意の表現でかまいません。なお、ここで設定したエリアスは次回ログインから有効になるので注意しましょう。ということで一回ログアウトして再度ログインしてコマンドを実行してみます。
# vncstart
起動メッセージが表示されパスワードの入力を求めてくるのでパスワードを入力、設定します。起動した旨のメッセージが表示されたらプロセスを確認してみます。
# ps ax | grep Xvnc
プロセスの確認ができたら一旦終了させます。
# vnckill
最初の起動でユーザーディレクトリ配下に「.vnc」というディレクトリが作成され、この中にXの設定、パスワード、ログが保存されるようになります。
次にVNCで使用するデスクトップを標準のtwmからgnomeに変更します。
2. デスクトップの変更
編集ファイル:/home/ユーザー/.vnc/xstartup
最終行をコメントアウトしてコマンドを追加する。
#twm &
exec gnome-session &
次にSSHサーバーがポートフォワーディングを使えるように設定を変更します。
3. SSHDポートフォワードの設定
編集ファイル:/etc/ssh/sshd_config
#AllowTcpForwarding yes
上記記述のコメントアウトをはずす。
AllowTcpForwarding yes
以上でサーバー側のセットアップは終了です。上記 1 は各ユーザーごとに別のスクリーン番号で設定し、設定したスクリーン番号を覚えておいて下さい。
4. SSHクライアントの設定
SSHトンネルを作るためのクライアントの設定ですが、ここでは「putty」を使用します。「poderosa」を使用する場合は別途プラグインが必要となります。
すでにサーバー接続のセッション情報は保存してあることを前提に説明します。
putty を起動したら保存してあるセッションを読み込みます。左側のSSHの中から「トンネル」を選択します。
「フォワードするポートを追加」の「源ポート」に任意の使用していないポート番号を入力します。上では15901を使用しています。
「送り先」に localhost:ポート番号 のように入力します。ここではスクリーン番号「1」に対応した「5901」を入力しています。追加ボタンをクリックしてポート一覧に追加します。これでトンネルの設定は終わりです。毎回入力しなくていいようにセッションに保存しておきましょう。
このセッションでサーバーに接続し、1で設定したコマンドでVNCサーバーを起動します。起動が確認できたら vncviewer を起動して接続してみます。
上のように入力してOKをクリックしパスワード入力ダイアログが表示されればトンネル接続は成功です。