Ubuntu で sshfs を使う

Ubuntu環境でsshfs (SSH Filesystem) を利用し、SSHプロトコルを通じてリモートサーバー上のファイルシステムをローカルマシンにマウントする方法を解説します。sshfsを使うと、リモートのファイルをローカルファイルのように直接扱うことができ、ファイル転送の手間を省き、開発や作業の効率向上が期待できます。

記事中の <ユーザ名><リモートマシン名> といったプレースホルダーは、ご自身の環境に合わせて適切な値に置き換えてください。例えば、<ユーザ名> はローカルマシンのログインユーザー名に置き換えます。

sshfs のインストール

Ubuntu 環境でのインストール手順は以下の通りです。

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

mount 操作の例

まず、マウントポイントとなるローカルディレクトリを作成します。ホームディレクトリ以下など、一般ユーザーが書き込み権限を持つ場所を推奨します (例: mkdir ~/remote_files)。ここでは例として /mnt を使用します。

mkdir /mnt

次に、作成したマウントポイントの所有者を操作ユーザーに変更します。<ユーザ名> はご自身のユーザー名 ($USER 環境変数も利用可) に置き換えてください。

chown <ユーザ名> /mnt

sshfsは FUSE (Filesystem in Userspace) フレームワークを利用するため、一般ユーザーがマウント操作を行うには、そのユーザーを fuse グループに追加する必要があります。<ユーザ名> はご自身のユーザー名に置き換えてください。このコマンド実行後、グループ変更を反映するために再ログインが必要な場合があります。

sudo gpasswd -a <ユーザ名> fuse

準備が整ったら、sshfs コマンドでリモートディレクトリをマウントします。<リモートマシンのユーザ名>@<リモートマシン名>:/directory をリモートサーバーの情報に、/mnt を先ほど作成したローカルのマウントポイントパスに置き換えてください。

主要なオプション:

sshfs -o intr -o sshfs_sync <リモートマシンのユーザ名>@<リモートマシン名>:/directory /mnt

セキュリティに関する注意: パスワード認証ではなく、より安全な公開鍵認証の使用を強く推奨します。事前にローカルマシンで ssh-keygen コマンドを使って鍵ペアを作成し、ssh-copy-id コマンドなどで公開鍵をリモートサーバーの ~/.ssh/authorized_keys に登録しておいてください。

unmount 操作の例

マウントしたファイルシステムを解除 (アンマウント) するには、fusermount コマンドを使用します。

fusermount -u /mnt

自動接続スクリプトの例

シェルログイン時などに、sshfsのマウント状態を確認し、未マウントの場合に自動で再マウントするための簡単なスクリプト例です。.bashrc.profile などに記述すると、新しいシェルが起動するたびに実行されます。

このスクリプトの動作概要:

  1. 一時ファイル /tmp/www_done が存在しない場合 (初回起動時など)、sshfs でマウントし、目印として同ファイルを作成します。初回マウント時から -o reconnect オプションを付与しています。
  2. 一時ファイルが存在する場合、マウント先の特定ファイル (ここでは index.html) の存在を確認します。
  3. ファイルが存在しない場合 (マウントが切れていると判断)、-o reconnect オプション付きで再マウントを試みます。このオプションは接続断時の自動再接続試行を有効にします。

注意点:

if [ ! -f /tmp/www_done ]; then
    # 初回マウント (-o reconnect を追加)
    sshfs -o reconnect -o intr -o sshfs_sync hoge@www.hoge.com:/var/www /home/ubuntuuser/www
    touch /tmp/www_done
else
    if [ ! -f /home/ubuntuuser/www/index.html ]; then
    # 再マウント (-o reconnect は接続断時の自動再接続試行)
    sshfs -o reconnect -o intr -o sshfs_sync hoge@www.hoge.com:/var/www /home/ubuntuuser/www
    fi
fi

【重要】セキュリティに関する警告:
このスクリプト例自体は認証情報を扱いませんが、いかなる場合でも自動化スクリプト内にSSHパスワード等の認証情報を直接記述することは絶対に避けてください。これは深刻なセキュリティリスクとなります。
sshfsをスクリプト等で利用する場合は、前述の通り、パスワード入力が不要な公開鍵認証を必ず設定してください。

(補足) より安定した、あるいはシステム起動時からの自動マウントが必要な場合は、.bashrc への記述ではなく、systemd の automount ユニット機能の利用を検討すると良いでしょう。

まとめ

この記事では、Ubuntu で sshfs をインストールし、リモートディレクトリをマウント・アンマウントする基本的な手順と、簡単な自動接続スクリプトの例を紹介しました。sshfs を活用することで、リモートファイルへのアクセスをよりシームレスに行えます。

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

sshfs のさらに詳細なオプションや機能については、ターミナルで man sshfs コマンドを実行し、公式マニュアルを参照してください。