Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,583)  
CrystalDiskInfo  (1,811)  
Tera Term  (1,787)  
HandBrake Japanese Language Version  (1,743)  
CrystalDiskMark  (980)  
FFFTP  (765)  
ffdshow  (719)  
mixfont-mplus-ipa  (615)  
MergeDoc  (571)  
10  TortoiseSVN  (555)  
11  Amateras  (437)  
12  BathyScaphe  (396)  
13  FreeMind  (372)  
14  Cabos  (327)  
15  ギコナビ  (316)  
More >>

SSHツールを使ってリモート・ネットワーク・サービスにアクセスする

2008年11月13日 11:44 Keith Fieldhouse 1 2 3

 ネットワークの外部からネットワーク・サービスにアクセスできるだけでなく、ネットワークとは無関係のGUIアプリケーションを実行することもできる。たとえば、パッケージ・マネージャのSynapticを使って、リモート・システムにインストールされているパッケージを確認したりできる。

 この動作には、X Window Systemのネットワーキング機能が利用される。アプリケーションがX Window System、あるいはX Window Systemを使うGTK(GNOME)やQt(KDE)などのGUIフレームワークを使ってウィンドウを描画すると、実際にはウィンドウ描画の要求がXサーバに送信される。このサーバはアプリケーションと同じコンピュータにあるのが一般的だが、これは必須ではない。描画の要求を、ネットワークの別のコンピュータで稼働するXサーバに送信することも可能だ。こうすると、アプリケーションは別のコンピュータにGUIを表示できる。アプリケーションでは、GUIを表示するコンピュータを環境変数DISPLAYから知ることができる。

 この方法の弱点は、X Display Protocolがセキュリティを考慮して設計されていないことだ。アプリケーションをネットワーク経由で操作している様子を、第三者が"観察"できてしまう。また、当然ながら、アプリケーションを実行しているコンピュータにはXサーバが稼働するコンピュータが"見える"必要があるが、ファイアウォールやその他の障害物が途中にあるため、常に可能とは限らない。

 ここでもSSHが解決策となる。リモート・コンピュータに接続するときにssh-Xオプションを使うと、プロキシXサーバがリモート・コンピュータに作成され、DISPLAY変数が適切に設定される。実行されるXアプリケーションは、このプロキシに要求を送信する。プロキシは、高いセキュリティを備えたSSH接続を使って要求を"本物の"Xサーバに転送する。

 リモート・サーバでSSHの設定を調整して、X11フォワーディングを有効にする必要もある。ほとんどのLinuxディストリビューションでは、この設定を/etc/ssh/sshd_configファイルの編集と、変数X11Forwardingを"yes"に設定することで行う。この変更を有効にするには、sshdを再起動する(Ubuntuの場合は「/etc/init.d/sshd restart」を実行する)。また、Xauthが/usr/bin/xauthにインストールされていることも確認する。Xauthは、プロキシ・サーバへの接続を認証するためにSSHで使用される。

 これで、リモート・ネットワークにあるネットワーク・サービスとGUIアプリケーションの両方にアクセスできる。また、ファイルにもリモートからアクセスできる。SSHベースのscpコマンドは、リモート・システムとの間でファイルをコピーするコマンドだ。ただし、1つか2つのファイルならまだしも、それ以上の数のファイルをコピーしようとすると、この方法はかなり面倒くさく、使いにくい。

 代わりに、SSH Filesystem(SSHFS)を使ってファイルをリモート・システムにマウントできる。SSHFSは、Filesystem in Userspace(FUSE)プロジェクトをベースとし、カーネルを変更せずにファイルシステムの実装を可能とする。リモート・ファイルには、高いセキュリティで保護されたSSH接続を使って簡単にアクセスできる。SSHFSを使うには、ローカル(クライアント)システムにSSHFSをインストールする必要がある。Ubuntuでは、「sudo apt-get install sshfs」を実行するとインストールが行われる。その後で、マウント・ポイントを設定する。ファイルシステムをマウントすると、このローカル・システム上のディレクトリにリモート・ファイルが姿を現す。たとえば、REMOTEMOUNTというディレクトリを作成し、これにリモート・システムのホーム・ディレクトリをマウントするには、コマンド「sshfs dyndns.example.com: REMOTEMOUNT」を実行する。

 sshfsを実行するためにsudoを使う必要はない。sshfsコマンドの実行が完了したら、REMOTEMOUNTディレクトリでlsを実行するとリモート・ホーム・ディレクトリの内容が表示される。リモートのファイルは他のファイルと同じように操作できるが、ファイルの内容がSSH接続を通してやり取りされるため遅延が発生することを念頭に置く必要がある。

 アクセス権の問題が発生した場合は、ローカルで使用するアカウントが"fuse"グループのメンバかどうかを確認する。多くのディストリビューションでは、「usermod -G fuse username」を実行するとこの設定を行える。

 リモート・ネットワークから切断する、つまりシステムをアンマウントするには、コマンド「fusermount -u REMOTEMOUNT」を実行する。

 OpenSSHプロジェクトが提供するツールを使うことで、プライベート・ネットワークをリモートから操作する際に事実上あらゆる機能に高いレベルでアクセスできる。こういったツールを使うと、ネットワークのセキュリティを維持したまま、その能力をインターネットのどこからでも活用できる。

Linux.com 原文(2008年11月11日)

最終更新:2009年01月13日 17:07
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.