Ubuntu で sshfs を使う

Ubuntu環境でsshfs (SSH Filesystem) を利用し、SSHプロトコルを通じてリモートサーバー上のディレクトリをローカルマシンにマウントする方法を解説します。sshfsを使うと、リモートのファイルをローカルのファイルと同じ操作で扱えます。

記事中の <リモートマシンのユーザ名><リモートマシン名> といったプレースホルダーは、ご自身の環境に合わせて置き換えてください。

sshfs のインストール

Ubuntu でのインストール手順は以下の通りです。ターミナルを開き、以下のコマンドを実行します。sshfs は universe リポジトリのパッケージです。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install sshfs

sshfs は FUSE (Filesystem in Userspace) を利用します。Ubuntu 22.04 以降では sshfs パッケージが fuse3 に依存しており、必要なパッケージは同時にインストールされます。また、一般ユーザーがマウントするために fuse グループへ所属する必要はありません。

mount 操作の例

まず、マウントポイントとなるローカルディレクトリを作成します。sshfs は一般ユーザーで実行し、マウントポイントはそのユーザーが所有している必要があるため、ホームディレクトリ以下に作成します。ターミナルを開き、以下のコマンドを実行します。

mkdir -p ~/remote_files

次に、sshfs コマンドでリモートディレクトリをマウントします。ターミナルを開き、以下のコマンドを実行します。<リモートマシンのユーザ名>@<リモートマシン名>:/directory をリモートサーバーの情報に置き換えてください。

sshfs -o reconnect -o ServerAliveInterval=15 <リモートマシンのユーザ名>@<リモートマシン名>:/directory ~/remote_files

主要なオプション:

マウントされたことを確認するには、以下のコマンドを実行します。

df -h ~/remote_files
ls ~/remote_files

公開鍵認証を設定しておくと、パスワード入力なしでマウントできます。ローカルマシンで ssh-keygen コマンドにより鍵ペアを作成し、ssh-copy-id コマンドで公開鍵をリモートサーバーの ~/.ssh/authorized_keys に登録します。ターミナルを開き、以下のコマンドを実行します。

ssh-keygen -t ed25519
ssh-copy-id <リモートマシンのユーザ名>@<リモートマシン名>

unmount 操作の例

マウントを解除 (アンマウント) するには、fusermount3 コマンドを使用します。ターミナルを開き、以下のコマンドを実行します。

fusermount3 -u ~/remote_files

fuse3 ではなく fuse (バージョン2) を使用している環境では、コマンド名は fusermount です。ターミナルを開き、以下のコマンドを実行します。

fusermount -u ~/remote_files

自動マウントスクリプトの例

シェルの起動時にマウント状態を確認し、マウントされていない場合にマウントするスクリプト例です。~/.bashrc に記述すると、新しいシェルが起動するたびに実行されます。mountpoint コマンドは、指定したディレクトリがマウントポイントであるかを判定します。ユーザー名、ホスト名、パスは環境に合わせて変更してください。

if ! mountpoint -q /home/ubuntuuser/www; then
    sshfs -o reconnect -o ServerAliveInterval=15 hoge@www.hoge.com:/var/www /home/ubuntuuser/www
fi

このスクリプトはパスワード入力を伴わないことが前提です。スクリプト内にパスワードを記述してはいけません。前述の公開鍵認証を設定してください。

アクセス時にマウントする方式にする場合は、systemd の automount ユニットを使用します。/etc/systemd/system/home-ubuntuuser-www.mount と同名の .automount ユニットを作成し、systemctl enable --now home-ubuntuuser-www.automount を実行します。

まとめ

この記事では、Ubuntu で sshfs をインストールし、リモートディレクトリをマウント・アンマウントする手順と、自動マウントスクリプトの例を示しました。

トラブルシューティングと参考情報

オプションの詳細は、ターミナルで man sshfs コマンドを実行して確認できます。