sshfsでリモートマシンのディスクを直接mount

Windowsマシンからsshでしか入れない遠隔地のLinuxへ、explorerのようなシェルで直接アクセスできるようにする方法といえば、たとえばこんな風なSSHポートフォワーディングとWindows上のループバックアダプタを使った方法が有名ですが、もっと別の方法がないかどうかということで検討。。

Linuxのマシンからであれば、sshfsというまさしくsshごしにマウントしてしまうものがあるようです。FedoraやUbuntuの場合はyumなどで一発で取ってこれるようですが、どうもCentOSの場合標準ではモジュール提供してくれていないみたいで。仕方ないので野良のrpmを使うことにする。

$ yum install yum-priorities
$ rpm -ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
$ yum --enablerepo=rpmforge install dkms-fuse sshfs
$ su
# vi /etc/group
fuse:x:102:rarul
(fuseグループに利用したいユーザを追加)

CentOS5(RHEL5)のfuseのkernelモジュールが野良で配布されていたんでほとんど何もせずいけたけど、もしそうでない場合は手動でkernelモジュールコンパイルして組み込んだりする必要あり。上記でインストールOKなので、いざ使ってみる

$ sshfs -p port_num account@example.com:/home/rarul mntpoint
$ ls mntpoint
$ fusermount -u mntpoint

これで、Linuxマシンからの接続はOK。今回の目的はWindowsマシンからも直接見えるようにすることなので、このマウントしたポイントをSambaで公開してやればよい。ただこの場合、sshセッションを張ったユーザ以外からもアクセスできるようにしないといけない。

# vi /etc/fuse.conf
user_allow_other (追加)
$ sshfs -p port_num -o allow_other account@example.com:/home/rarul mntpoint

この設定で本当に誰でもアクセスできるようになっちゃうので、設定するときは要注意。ついでに、これをブロードバンドルータごしにやってる場合、ルータのDynamic NAPTのタイムアウトで切られてしまうので、sshに定期的にパケット流して切られないようにする。

# vi /etc/ssh/ssh_config
Host *
ServerAliveInterval 180 (追加、180秒、たいていのルータは5分か10分がタイムアウト時間)

sshセッションが間のルータによって強制的に切られてしまうと、sshfsプロセスやそのマウントポイントにアクセス中のプロセスが止まっちゃうので、結構焦ります。ps u でsshfsプロセスを確認しkillすればOKの模様。

上記の設定で無事に、遠隔LinuxにsshfsでつながっているLAN内のLinuxを介して、WindowsからSambaごしに直接アクセスできました。バンザイ。

・・・ということの設定に時間取られてしまった。本当にやりたかったのは、遠隔地のLinuxマシン内のスクリプトの本格的な修正が本来の目的で・・・

このブログ記事について

このページは、らるるが2009年5月25日 13:03に書いたブログ記事です。

ひとつ前のブログ記事は「そうだ、マルチモニタにしよう」です。

次のブログ記事は「「ハイパフォーマンスWebサイト」読んだ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0