SSHFSとは
SSHFSはSSH File Transfer Protocol(SFTP)を使ってリモートのディレクトリをローカルのファイルシステムとしてマウントするFUSEベースのツールです。一行定義: SSHのトンネルを使って安全に遠隔ファイルをローカルのように扱う仕組みです。
重要: SSHFSはネットワークに依存します。帯域や遅延が高い環境ではパフォーマンスが低下します。
インストール(yum)
CentOS / RHEL系ではパッケージマネージャで簡単に導入できます。
yum install fuse-sshfs
インストール後は「リモートフォルダをマウントする」セクションへ進んでください。
ソースからインストール
最新バージョンを使いたい、あるいはパッケージが古い場合はソースからビルドできます。以下は代表的な手順です。
cd /tmp
wget https://github.com/libfuse/sshfs/releases/download/sshfs_2.8/sshfs-2.8.tar.gz
展開してビルドします:
tar xvf sshfs-2.8.tar.gz
cd sshfs-2.8
./configure
make && make install
注: ビルドに必要な開発パッケージ(gcc、make、libfuseの開発ヘッダ等)が不足するとエラーになります。ディストリビューションのドキュメントに従って事前準備してください。
リモートフォルダをマウントする
まずローカル側にマウントポイントを作ります。例として /var/mnt を使います。
mkdir -p /var/mnt
リモートサーバーが192.168.0.10、ユーザーがremoteuserの場合、基本的なマウントは次の通りです:
sshfs [email protected]:/ /var/mnt/
マウントの一般的なオプション例:
sshfs [email protected]:/remote/path /var/mnt -o reconnect -o Compression=yes -o ServerAliveInterval=15
- reconnect: 接続が切れた場合に自動再接続を試みます。
- Compression=yes: 帯域が狭い場合に有効ですが、CPU負荷が増えます。
- ServerAliveInterval=15: 長時間アイドルで切断されないようにします。
重要: 上記オプションのうちssh固有のオプションを渡す場合は -o ssh_command=’ssh -i /root/.ssh/id_rsa -o StrictHostKeyChecking=yes’ のように指定できます。
永続マウント(/etc/fstab と systemd)
- /etc/fstabに追加して永続化する場合の例:
# /etc/fstab の例
[email protected]:/remote/path /var/mnt fuse.sshfs defaults,_netdev,allow_other,IdentityFile=/root/.ssh/id_rsa,reconnect 0 0
注意: allow_other を使うと他のユーザーもアクセスできます。必要に応じて権限を制限してください。
- systemdの自動マウント(unit)で管理する方法(推奨: 起動順序や依存関係の管理が楽):
# /etc/systemd/system/var-mnt.mount を作成(ユニット名はマウントポイントに対応)
[Unit]
Description=Mount /var/mnt via SSHFS
After=network-online.target
[Mount]
[email protected]:/remote/path
Where=/var/mnt
Type=fuse.sshfs
Options=_netdev,allow_other,IdentityFile=/root/.ssh/id_rsa,reconnect
[Install]
WantedBy=multi-user.target
systemctl daemon-reload systemctl enable –now var-mnt.mount
鍵認証の設定
パスワード入力を避けて自動マウントするには、SSHの公開鍵認証を設定します。通常はローカルで ssh-keygen を実行し、公開鍵をリモートの ~/.ssh/authorized_keys に追加します。
アンマウント(切断)
標準のアンマウント:
umount /var/mnt
FUSE専用の安全な切断:
fusermount -u /var/mnt
接続が切れてしまって通常の umount が失敗する場合は -z(遅延解除)オプションを使うことがありますが、まず現在のプロセスやファイルディスクリプタを確認してから実行してください。
トラブルシュートとテストケース
チェックリスト(管理者向け):
- sshでリモートへログインできるか: ssh [email protected]
- 公開鍵/秘密鍵のパスと権限が正しいか: ~/.ssh の権限は700、authorized_keysは600
- fuseモジュールがロードされているか: lsmod | grep fuse
- マウントコマンドでエラーメッセージは何か: dmesg / journalctlで確認
簡易テストケース:
- ログインテスト: sshで認証成功するか。期待値: パスワードなしでログイン可能(鍵認証)。
- マウント成功: sshfsでマウント後、ls /var/mnt がリモートファイルを表示する。期待値: リモートのトップディレクトリ一覧が表示される。
- ファイルの読み書き: リモートにファイルを作成・編集できるか。期待値: 作成と編集が正常に行える。
- 再起動後の永続化確認(fstab/systemdを利用した場合)。期待値: 再起動後に自動マウントされる。
問題が続く場合の一般的な原因:
- ネットワークやDNSの問題
- リモート側のSSH設定(AllowUsers、password/Key設定)
- ファイルシステム権限やSELinuxポリシー
セキュリティ強化の実践ガイド
- 必ず公開鍵認証を使う。パスワード認証は無効化を検討。
- authorized_keys に対してコマンド制限やfrom=オプションで接続元IPを制限する。
- リモートでrootログインを禁止し、必要なら専用ユーザーを用意する。
- マウント時は必要最小限のオプションに留める。allow_other を使うとアクセス範囲が広がる。
- 監査: マウントポイントの利用ログを収集し、異常な操作を検知する。
いつSSHFSが向かないか(反例)
- 高負荷なI/Oや大量の小ファイル操作が必要な場合。遅延でアプリケーションが不安定になることがあります。
- ファイルロックを厳密に要求する分散アプリケーションには不向きです。
- 高可用性や共有クラスタの代替には適していません。
代替手段: NFS、SMB/CIFS、rsyncや分散ファイルシステム(Ceph、Gluster)などが候補になります。
小さな作業手順(実践メソッド)
- 設計: マウントするパス、ユーザー、アクセス権、永続化方法を決定
- 準備: 鍵を配布、必要なパッケージをインストール、マウントポイント作成
- 実行: 一時的にマウントして動作確認
- 永続化: fstabやsystemdで自動化
- 監視: ログと接続状態を定期的にチェック
役割別チェックリスト
管理者:
- パッケージ/依存をインストール
- 鍵配布と権限設定
- fstab/systemdの設定と検証
エンドユーザー:
- マウントポイントを使ってファイル操作
- 権限不足があれば管理者に連絡
1行用語集
- SSHFS: SSH経由でリモートをマウントするFUSEベースのツール
- FUSE: ユーザ空間でファイルシステムを作る仕組み
- allow_other: マウントを他ユーザーへ許可するオプション
まとめ
SSHFSは手軽に安全なリモート共有を実現します。小規模なファイル共有や開発用途には非常に便利です。ただし、大量I/Oや厳格なロック管理が必要なケースでは別のソリューションを検討してください。鍵認証、永続化の方法、監視を適切に設定し、安全に運用しましょう。
重要: 本手順は一般的なものであり、実運用前に自環境での検証とセキュリティレビューを行ってください。