Ubuntu Weekly Recipe

第21回リモートアクセス(1):リモートデスクトップとsshの利用

Ubuntuを複数のマシンで利用する場合、マシンをまたがって作業を行いたいことがあります。たとえば、片方のマシンにしか必要なデータがない・片方のマシンでしかアプリケーションの設定をしていない・1台のマシンでは処理性能が足りない、などといった場合です。このような場合に、⁠相手側』となるマシンをネットワーク越しに利用する方法を紹介します。

リモートアクセスを利用する上での注意

なお、今回紹介するアクセス方法はいずれもLAN向けのものです。セキュリティに対する配慮はほとんどありませんので、一般的なブロードバンドルータの下で利用することを想定しています。

PCから直接PPP/PPPoE接続している環境、つまりグローバルIPアドレスが取得できる環境ではセキュリティ上利用しないことをお勧めします。もし利用するのであれば、ポート番号を変更した上で暗号化などを適用することを検討してください。

Ubuntu同士でのリモートデスクトップ環境(VNC)

Windows環境では、⁠リモートデスクトップ」⁠RDP)と呼ばれる、デスクトップ画面をリモートから操作するためのユーティリティが導入されています。図1のような設定画面をご存じの方も多いでしょう。

図1 Windowsでのリモートデスクトップ設定
図1 Windowsでのリモートデスクトップ設定

Ubuntuでも同様に、他のマシンからリモートデスクトップ接続を行うことができます[1]⁠。設定は[システム⁠⁠→⁠設定⁠⁠→⁠リモート・デスクトップ]から行います。

これは実際には⁠vino⁠というパッケージによって提供されています(設定画面はvino-preferencesです⁠⁠。この設定ツールを実際に起動してみた画面が図2です。非常にシンプルな設定でリモートデスクトップが扱えることがわかるでしょう。

図2 リモート・デスクトップ(vino)の設定画面
図2 リモート・デスクトップ(vino)の設定画面

早速操作をしてみましょう。まず、⁠他のユーザがデスクトップを操作できる]というチェックボックスにチェックを入れます。このままでは最低限の認証(接続要求があった場合に、ログオンしているユーザが明示的に承認する)だけで接続できてしまいます。

図3 ⁠承認]ダイアログ
図3 [承認]ダイアログ

この認証方法は直感的で便利なのですが、一方で、接続のたびに[承認]を行う必要があります。接続先のマシンが手元にあるのであれば問題ありませんが、一方で、食卓にあるノートPCから自分の部屋にあるデスクトップPCへ接続する、などといった場合には不便です。接続のたびにデスクトップPCのある場所まで移動して、接続要求を受け入れる、という操作を行う必要になってしまいます[2]⁠。

このため、通常は[パスワードの入力を要求する]にのみチェックを入れ、何らかのパスワードをセットしておくのが便利でしょう。また、このタイミングで、設定を行ったマシンのIPアドレスを調べておきましょう。ターミナルでifconfigコマンドを実行し、その結果を確認しておくのが簡単です。

次のコマンドを用いてインストールしてください。Synapticからインストールする場合は、xtightvncviewerパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install vncviewer

vncviewerをインストールしたら、⁠アプリケーション⁠⁠→⁠インターネット⁠⁠→⁠ターミナルサーバクライアント]とたどり、接続用のアプリケーションを呼び出します。ここで、⁠コンピュータ」欄に相手先となるマシンのIPアドレスを入力し、プロトコルとして「VNC」を選択します[3]⁠。

図4 ターミナルサーバクライアント
図4 ターミナルサーバクライアント

また、もしもクライアントとアクセス先のマシンで利用しているユーザ名が異なる場合、ユーザ名にアクセス先のマシンのユーザ名を入力しておいてください。この状態で[接続]ボタンを押すと、パスワードダイアログが表示されますので、先ほど設定したパスワードを入力します。

ネットワーク的な問題がなければ、図5のように、相手先のマシンのデスクトップが手元に表示されるようになるはずです。この接続はVNCを利用しているため、⁠同じデスクトップ画面を」利用する形になります(つまり、手元のマシンでリモートデスクトップ越しに操作を行うと、それが接続先のマシンのデスクトップに反映されます⁠⁠。

図5 VNCによるリモートデスクトップ
図5 VNCによるリモートデスクトップ

UbuntuからUbuntu (XDM)

VNCによるリモートデスクトップも便利ですが、ログインした状態を共有する、という動作の特性から、Windowsのリモートデスクトップのようにリモートログインを行って利用することはできません。こうした用途には、XDMCPを用いた接続を行うと良いでしょう。

設定は次のように行います。

まず、リモートコンピュータ側(リモートデスクトップを提供する側)のPCで、⁠システム⁠⁠→⁠システム管理⁠⁠→⁠ログイン画面]とたどり、ログイン画面の設定を開きます(ログイン画面の設定を開くにはある程度時間がかかるようです。すぐに反応がない場合は、数分程度待つ必要があるかもしれません⁠⁠。設定画面で「リモート」タブを開くと、初期状態では図6のように、⁠リモート・ログインを無効にする」という設定になっているはずです。この設定を「ローカルと同じにする」に修正しましょう。

図6 XDMCPによるリモートデスクトップの設定
図6 XDMCPによるリモートデスクトップの設定
図7 リモートログインを許可した状態
図7 リモートログインを許可した状態

また、ターミナルサーバクライアントは初期状態ではXDMCPに対応していませんので、xnestパッケージを導入します。以下のコマンドかSynapticから導入してください。

$ sudo apt-get install xnest

xnestを導入すると、さきほどターミナルサーバクライアント上で「VNC」が選べるようになったのと同様に、XDMCPを選べるようになります。

あとはVNCの場合と同じように、対象となるマシンのアドレスを入力し、接続を行えばログイン画面が表示されます。あとは通常のデスクトップ画面にログインするのと同様に、ユーザ名とパスワードを入力し、ログインしてください。

こちらはVNCと異なり、同じマシンに複数のユーザが接続して利用することができます。マシン側のメモリ搭載量にもよりますが、ローカルマシンの性能に不満がある場合などは、この方法で簡易シンクライアントとして利用することも可能です。

UbuntuからWindowsへの接続

Ubuntu環境からは、Windowsのリモートデスクトップ環境(RDP)へ接続することも可能です(標準状態のターミナルサーバクライアントは対Windowsのリモートデスクトップ接続のみをサポートしています⁠⁠。これは内部ではrdesktopコマンドを利用して接続しています。

利用法はVNCやXDMCPの場合と同じで、接続先マシンのユーザ名・パスワードを入力しておき、プロトコルとしてRDPを指定するだけです。後はWindows同士のリモートデスクトップと同じように操作できます。

Windows側の設定は、Windows同士でリモートデスクトップを利用するのと同じです。マイコンピュータ(Vista環境では「コンピュータ⁠⁠)上で右クリックし、⁠プロパティ]を開いて、⁠リモート」タブで「リモート デスクトップ」への接続を許可すれば良いでしょう。

筆者はWindows2000, Windows Vista, Windows Server 2003, Windows Server 2008で問題なく接続できることを確認しています。RDPは非常に優秀なリモートデスクトッププロトコルであるため、Ubuntu側のターミナルサーバクライアントの設定で「全画面」にしておくことで、ほとんどローカル環境と同じ速度で利用できるはずです。

Ubuntuをメインにした環境で、仮想マシンなどでWindowsを動かしている場合、RDPを用いて接続する方が快適なことがほとんどです。同じマシン上でWindowsを動かしている方は試してみてください。

WindowsからUbuntuへの接続

逆に、WindowsデスクトップからUbuntuへリモートアクセスを行う場合、一般的なVNCクライアントを利用すれば接続可能です。

TightVNCRealVNCなどのVNCクライアントをWindows環境に導入して接続してください。

VNCを利用する場合は簡単に接続できますが、その一方で、XDMCPを用いる場合はクライアント側にX環境が必要になります。XmingなどのXサーバをWindows上で動作させるのが簡便でしょう。

あるいは、andLinuxを用いてWindows上にUbuntu環境を構築するのも良い選択でしょう。今回のスクリーンショットの一部にはVistaのAero Glassが有効なウインドウが幾つか含まれていますが、これらはWindows VistaにandLinuxを導入した環境で取得しています。andLinuxにvinoとvncviewerをインストールすることで、UbuntuのターミナルサーバクライアントをWindows上で動作させています。

SSHによる接続

リモートデスクトップはデスクトップ画面を「そのまま」手元に引き寄せる形で利用しますが、場合によってはGUIは必要なく、単にターミナルだけが利用できれば良い場合もあるでしょう(Ubuntu上で何かをMakeする場合や、サーバを再起動する場合などです⁠⁠。

このような場合にはOpenSSHによるSSH接続を利用すると良いでしょう。この場合もやはり、グローバルIPアドレスが付与されているシステムでは安易に有効にするべきではありません。グローバルIPが付与される環境では、最低限パスワード認証を無効にする・接続ポートを変更する、といった処置を行う必要があります。

SSHを利用するには、アクセス先になるシステムにopenssh-serverパッケージを導入する必要があります。次のコマンドを用いるか、Synapticからインストールしてください。

$ sudo apt-get install openssh-server

インストールが完了した時点でSSHによる接続が可能になっています。クライアント側でターミナルを開き、ssh 《対象ホスト》と入力して接続してください。

X転送

SSH経由で接続した場合、各アプリケーションのGUIを手元に表示させることもできます。こうして起動したアプリケーションは、ローカルで起動したものとほとんと同じように動作します。

X転送を利用する場合、sshに-Xオプションを与え、ssh -X 《対象ホスト》と入力して接続してください。

おすすめ記事

記事・ニュース一覧