sshfsでリモートホストのファイルを共有する
タグ: ssh / 初版公開: 2013-07-11

sshfsはUNIX風OSでssh(sftp)を使ってリモートホストのファイルをマウントできるプログラムだ。

インストール

sshfsはdebianの場合は以下でインストールできる。

apt-get install sshfs

fuseの設定

sshfsはfuseを使っているので、fuseグループにsshfsを実行するユーザを追加しておく必要がある。以下のコマンドの<username>はユーザ名に読み替える。

gpasswd -a <username> fuse

ログインし直して、fuseグループに追加されていることを確認しよう。

id

出力にfuseが含まれていれば成功している。

uid=1000(xmisao) gid=1000(xmisao) groups=1000(xmisao),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),116(fuse)

sshfsの使い方

以下のコマンドで<host>にssh接続した際のホームディレクトリ以下が、<mountpoiut>にマウントされる。

sshfs <host>: <mountpoiut>

もしホームディレクトリ以外を指定したければ、:の後にリモートホストのディレクトリを指定する。ルートディレクトリを指定すれば、全ファイルが操作できる。

sshfs <host>:<dir> <mountpoiut>

sshでリモートホストにアクセスして開発を行う場合があるが、多数のホストに接続していると、それぞれのホストでvim等の環境を設定することが億劫になることもある。そういう時は、sshfsを使ってリモートホストのファイルをマウントし、ローカルファイルと同様に直接編集してしまえば良い。

加えてsshfsが強力なのは、~/.ssh_configで定義したsshのホストの設定がそのまま活用できることだ。sshコマンドで接続できるホストなら、ProxyCommandを使った多段接続であろうと、すべてのホストがsshfsでマウントできる。複数のホストにまたがって、ファイルの移動やコピーを行う際にはとても便利だ。

sshfsでマウントしたディレクトリのアンマウントは、fusermountで行うと良いようだ。

fusermount -u <mountpoint>

なお私は試していないが、WindowsではFUSEのWindows版であるDokanを使ったDokan-SSHFSがあり、MacではMacFUSEを使ってsshfsを動作させることができるようだ。