SSHFSというのを使ってみました。
その名の通り SSH File System です。
SSH(SFTP)接続できるサーバのファイルシステムをローカルにマウントして使うことができます。
これ、samba と組み合わせるとすごい便利で、sambaが動いているサーバで SSHFS を使ってリモートのサーバのファイルシステムを(SSH)マウントすると、samba 経由でファイルの編集とかアップロードができます。
エクスプローラーでローカルのファイルを見るのと全く同じように扱えます。
WinSCPをエクスプローラー like に使っても同じようなことができるけど、やっぱりサーバ側でやった方が一回こっきりの設定と接続(マウント)で済むので楽チンです。
もうひと月くらい使っていますが、安定しています。
ずっとマウントしっぱなしでも問題ありません。
ただ、マウント先のサーバを再起動する場合はアンマウントしてから再起動した方が良さそうです。
マウント先のファイルをsamba経由で編集中に停電が起きて(泣)マウント先のサーバだけが停止した時に、ファイルを開いていた(Windows XP端末上の)エディターが固まりました。。。
当然といえば当然ですが。
その後、停電から回復してもエディターは固まったままでした。
sshfs のアンマウントもできなくなっていました。
結局エディターを kill して、sshfs が使っていた sshd も kill してマウントもしなおしました。
この問題は sshfs の問題か samba の問題か Windows XP の問題かわかりませんが、マウント先を再起動する場合はアンマウントする方が無難なようです。
さて、sshfs でググルと以下の2つが出てきます。
・shfs kernel module
・SSH Filesystem
上のは installation guide に従ってコンパイル、インストールは出来たんだけど動きませんでした。
よく調べなかったけど原因はわかりませんでした。
それであっさり諦めて下のやつを試しました。
ボクは kernel 2.6.9 の環境で試しました。
最初に FUSE を入れます。
インストールはいたって簡単。
tarボールをダウンロード&展開して、
# ./configure
# make
# make install
するだけ。
次に sshfs をダウンロード&展開して、
# ./configure
# make
# make install
するだけ。
サーバの再起動もいりません。
使い方は、
sshfs hostname: mountpoint
です。
sshfs コマンドは一般ユーザ権限で実行できます。便利ですね。
# sshfs hagy@192.168.0.1: /home/hagy/ssh/192.168.0.1/
なんて感じ。(詳しくは man sshfs してください)
sshfs が mount コマンドの代わり。
その次が SSH 先の指定。ssh ユーザと接続先アドレスです。
ssh コマンドと同じで実行ユーザと ssh ユーザが同じなら ssh ユーザの指定は省略できます。
上の例で説明すると実行ユーザが hagy なら hagy@ の部分は省略可能。
接続先アドレスの後ろのコロン(:)を忘れないように。コロンの後ろに PATH を続けてもOKです。
その次がマウントポイントです。
上の例だと 192.168.0.1 の hagy のホームディレクトリがローカルホストの /home/hagy/ssh/192.168.0.1/ ディレクトリにマウントされます。
裏では ssh コマンド(sftp)が実行されており、ps ax すると4つ前後の sshfs プロセスと1つの ssh プロセスを確認できます。
ssh プロセスは -s sftp オプション付きで sftp として動いているのがわかります。
アンマウントしたい場合は、
fusermount -u mountpoint
です。
# fusermount -u /home/hagy/ssh/192.168.0.1/
で、これも一般ユーザ権限で実行可能です。
sshfs でマウントしたディレクトリを他のユーザが参照したり、samba 経由で見る場合には、ちょっとしたコツがいります。
通常、sshfs でマウントしたディレクトリはマウントした本人しか見れません。
ssh 接続先を見るのですから(セキュリティに配慮すれば)当然ですよね。
root でも見れません。
そこで、sshfs コマンドの実行時にオプションをつけます。
# sshfs -o allow_root hagy@192.168.0.1: /home/hagy/ssh/192.168.0.1/
この allow_root オプションを加えると root がマウント先を参照できるようになるので samba 経由で見られるようになります。
allow_root オプションを使うには、/etc/fuse.conf に
user_allow_other
と一行設定を書かなくてはなりません。
デフォルトでは /etc/fuse.conf は存在しないので作ってください。
是非お試しあれ。

