Edited at

Macでsshfsを使ってローカルからリモートのファイルを触る

リモートサーバにsshでログインして作業をする機会は多々あるが、

ちょっとした作業をおこなうだけにも関わらず毎回毎回sshをするのは非常に面倒。

そこで、リモートのディレクトリをローカルにマウントし、

ローカルにいながらにしてリモートのファイルを触れるようになる方法を紹介する。

$ sw_vers

ProductName: Mac OS X
ProductVersion: 10.9.4
BuildVersion: 13E28


FUSE for macOS(FUSE for OSX)のインストール

バージョン3.4.0からFUSE for macOSという名前になったようです。


ディスクイメージからインストール

http://sourceforge.net/projects/osxfuse/ からosxfuseの最新版をダウンロードし、

ダウンロードした osxfuse-[VERSION].dmgをダブルクリックしてインストールする。

(2019-03-06 @aosho235 さんの指摘を受けて追記)

sourceforgeには2.8.3までしかホストされていないようなので、 https://github.com/osxfuse/osxfuse/releases から 最新バージョンの.dmgをダウンロード・インストールします。

インストール後、システム環境設定の一番下の欄にFUSE for OSXの項目が増えていることを確認します(下の画像はFUSE for OSXをインストールしたときの例ですが、FUSE for macOSをインストールした場合も同様です)。


Homebrewからインストール

brewコマンドでインストールすることもできる。

$ brew install osxfuse

ただし、Homebrewからインストールした場合、以下のコマンドが必要となる。

$ sudo /bin/cp -RfX /usr/local/opt/osxfuse/Library/Filesystems/osxfusefs.fs /Library/Filesystems

$ sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs

さもないと、下で紹介するコマンドを実行してマウントしようとすると、

the OSXFUSE file system is not available (-1)というようなエラーが出てしまう。

(2019-03-06 @xtaniguchimasaya さんの指摘を受けて追記)

osxfuseはhomebrew/caskに移動したようです。

$ brew tap homebrew/cask

$ brew cask install osxfuse

インストール後の確認方法は.dmgをインストールした場合と同様です。


sshfsのインストール


パッケージからインストール

次のURLからsshfsの最新版をダウンロードし、

ダウンロードしたSSHFS-[VERSION].pkgをダブルクリックしてインストールする。

正しくインストールされているか確認する。

$ sshfs --version

SSHFS version 2.5 (OSXFUSE SSHFS 2.5.0)
OSXFUSE library version: FUSE 2.7.3 / OSXFUSE 2.7.4
no mount point


Homebrewからインストール

Homebrewでインストールすることもできる。

$ brew install sshfs


使用方法


マウント

$ mkdir mountpoint

$ sshfs [user]@[hostname]:[absolute_path_to_dir] mountpoint

これで、ローカルの mountpointディレクトリはリモートの absolute_path_to_dirを指し示すようになり、

ローカルにいながらにしてリモートのファイルを触ることが出来る。


アンマウント

$ diskutil unmount mountpoint

(2019-03-06 @do7be さんの指摘を受けて追記)

アンマウントできないときはforceオプションが必要になります。

$ diskutil unmount force mountpoint