WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

NetWalker で動作するアプリのウインドウを Mac のデスクトップに表示する

NetWalker は Linux ベースで、ウインドウシステムには X-WINDOW が採用されているのはご存知のとおりです。この X-WINDOW の最大の特徴として、クライアント・サーバーモデルを採用しており、プログラムの実行とウインドウの表示が別マシンにできるという機能があります。つまり、 NetWalker で動作するアプリのウインドウを、 Mac や PC の画面に表示すると言うことが可能なわけです。

ということで、この機能を使って Mac OS X のデスクトップに NetWalker アプリのウインドウを表示することを試してみたので、本日なその方法をご紹介します。いくつか問題もあって、実用性という意味ではいまいちかなという結果なのですが、方法自体は知っておいて損はないと思いますよ。

NetWalker に SSH ログインできるようにする

X-WINDOW の通信は平文で行うことも可能なのですが、セキュリティー的な問題が大きいので、通常は SSH の X Forwarding という機能を使って暗号化します。そのためには NetWalker 側で SSH サーバーを起動しなければならないので、まずはそのインストール・設定を行います。

NetWalker に SSH サーバーをインストール

標準状態の NetWalker には SSH のサーバーソフトがないので、新たにインストールします。サーバー系のソフトは「アプリケーション」メニューの追加と削除からはインストールできないので、「システム」メニューの [システム管理]-[Synaptic パッケージ・マネージャ] を起動します。

上の画像にもありますが、以下の手順で openssh-server をインストールしてください。

  • クイック検索で openssh-server を検索。
  • openssh-server の項目のチェックボックスをダブルクリックしてマークする。
  • 「適用」ボタンをクリック。

これだけでインストールは完了です。自動起動の設定などもやってくれので、本当に手間がありません。

Mac からログインしてみる

NetWalker 側で OpenSSH サーバーが起動したので、さっそく Mac からログインしてみましょう。

おっとその前に、 NetWalker の IP アドレスがわからないとログインのしようがないので、それを確認しておきます。「システム」メニューから [システム管理]-[ネットワーク・ツール]を選択し、「デバイス - ネットワーク・ツール」を起動します。そして「ネットワーク・デバイス」で「Ethernet インターフェース (eth0)」を選択すると、現在の IP アドレスが確認できます。

IP アドレスがわかったので、今度こそログインです。 Mac 側でターミナル(アプリケーション/ユーティリティにあります)を起動して、以下のコマンドを実行してください(<ユーザー名>は NetWalker 側のログインユーザー名、 <IPアドレス> は上で調べた NetWalker の IP アドレスに、それぞれ置き換えてください)。

ssh -l <ユーザー名> <IPアドレス>

初回ログイン時は相手サーバーが正しいかを尋ねてくるので、 yes で答えてください。その後パスワードを聞いてくるので、 NetWalker 側のログインパスワードを入力すれば、ログインできます。正常にログインできることが確認できたら、 exit コマンドでいったんログアウトしておいてください。

X Forwarding を使ってみる

それでは、いよいよ NetWalker の GUI アプリを Mac 側に表示してみましょう。まずは Mac 側で X11 (ターミナル同様、アプリケーション/ユーティリティにあります)を起動し、次にターミナル上で以下のコマンドを実行してください(-X オプションを付加していることに注意)。

ssh -X -l <ユーザー名> <IPアドレス>

そしてログインした先で、 Mac 側に表示したい GUI アプリを起動します。例えば gedit を起動するなら以下のコマンドになります。

gedit 2> /dev/null &

"2> /dev/null" というのは冗長なエラー出力を表示しないためのもので、行末の '&' は、アプリケーションをバックグラウンドで動作させるための指示です。他のアプリを実行する際も、コマンドラインの最後にこれらを付けておくことをお勧めします。

上記コマンドを実行すると、以下のように Mac の画面上にテキスト・エディタのウインドウが表示されます。

とりあえず成功です。 NetWalker のアプリに Mac のタイトルバーがついてるのは、なかなか不思議な光景ですね。

注意点として、作業が終わって NetWalker アプリのすべてのウインドウを閉じたら、 SSH のログアウトをする前に X11.app を終了させたほうが良いようです。 X11 が動いている間は SSH が終了しません。

公開鍵認証を使う

以上で NetWalker アプリを Mac 上で使うことはできました。ただ、常に SSH サーバーが起動していてネット越しのログインができる状態なので、ホットスポットなどに繋ぐのはちょっと怖いですね。そこで「公開鍵認証」というログイン方法を使って、セキュリティーを向上させる方法をご紹介します。

Mac 側で鍵ペアを作成

公開鍵認証を行うには、まずクライアントである Mac で公開鍵・秘密鍵のペアを作成します。それには、ターミナルを起動して以下のコマンドを実行します。

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa

鍵を暗号化するためのパスワードを聞いてくるので、適当に入力してください。このパスワードはログイン時に必要になるので、忘れないようにご注意を。これで ~/.ssh 以下に id_rsa (秘密鍵), id_rsa.pub (公開鍵)という 2 つのファイルが作成されます。とくに秘密鍵である id_rsa は、絶対に他人に知られないように注意してください。

鍵ペアを作成したら、 scp (SSH を利用してファイルコピーを行うコマンド)で公開鍵を NetWalker に転送します。 <ユーザー名> と <IPアドレス> はそれぞれ NetWalker でのユーザー名、 IP アドレスに置き換えてください。

scp ~/.ssh/id_rsa.pub <ユーザー名>@<IPアドレス>:~/id_rsa.pub

パスワードを聞いてくるので、 NetWalker のログインパスワードを入力してください。これで Mac 側の準備は完了です。

NetWalker 側の設定

次は、サーバーである NetWalker での設定作業です。まず、 Mac から転送した公開鍵を登録します。端末を立ち上げて、以下のコマンドを実行してください。

mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/*

これで公開鍵認証ができるようになったので、不要なパスワード認証を禁止しておきます。以下のコマンドを実行して gedit を起動し・・・

sudo gedit /etc/ssh/sshd_config

ファイルの最後に以下の行を追加し、保存・終了します。

PasswordAuthentication no

その後、端末で以下のコマンドを実行し、設定を反映させます。

sudo /etc/init.d/ssh reload

これで単純なパスワードによるログインが禁止され、登録された公開鍵に対応する秘密鍵を持つクライアントしかログインできないようになります。

Mac からログインしてみる

それでは、 Mac から再びログインしてみましょう。実行するコマンドはパスワード認証と同じです。

ssh -X -l <ユーザー名> <IPアドレス>

パスワードを聞いてきますが、ここではログインパスワードではなく鍵を作成するときに指定したパスワードを入力してください。ログインができたら、あとの操作はパスワード認証時とまったく同じです。 gedit などを起動してみてください。

以上、本日は SSH の X Forwarding 機能を利用して、 Mac 画面上に NetWalker アプリのウインドウを表示する方法をご紹介しました。ただ、実は Mac の X11 は日本語の扱いにいろいろ厄介な点があり、例えばデフォルトの状態では日本語の入力ができません。日本語入力を可能にする方法をいくつかあるのですが、必要なソフトをソースから構築する必要があり、どれも少々面倒です。

むしろ、 VMware で Linux を起動してしまった方が楽だったりするかなぁ、と、やってみた後で気付きました orz 。 Linux での X Forwarding も Mac とほぼ同様の方法で行えるはずなので、興味のある方はお試しください。

なんだか中途半端で申し訳ありませんが、本日はこんなところで。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles