sshfsコマンドでリモートサーバーをローカルにマウントする方法|インストールから自動マウントまで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > sshfsコマンドでリモートサーバーをローカルにマウントする方法|インストールから自動マウントまで

「リモートサーバーのファイルをローカルで直接編集できたら、もっと効率が上がるのに」
SSH接続した先のファイルをScpで毎回コピーしたり、viで直接編集したりするのは手間がかかります。

この記事では、sshfsコマンドを使ってリモートサーバーのファイルシステムをローカルにマウントする方法を解説します。
RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済みの手順で、インストールから日常的な活用例、アンマウント、トラブルシュートまで一気に説明します。

この記事のポイント

・sshfsコマンドでリモートのディレクトリをローカルに透過マウントできる
・インストールはfuse3パッケージ1本で完了、root権限なしで使える
・/etc/fstabやsystemd.mountで起動時自動マウントも設定可能
・アンマウントはfusermount3 -u、Connection reset by peerはSSHキー再確認


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

sshfsとは何か?仕組みとメリット

sshfs(SSH Filesystem)は、SSHプロトコルを使ってリモートサーバーのディレクトリをローカルにマウントするツールです。FUSE(Filesystem in Userspace)という仕組みを使っているため、root権限なしに一般ユーザーが使えます

内部ではSSH接続のSFTPサブシステムを利用しているため、ファイアウォールの追加ポート開放は不要です。すでにSSHで接続できるサーバーであれば、すぐに使えます。

従来の方法と比べると、sshfsの利点は明確です。

方法 特徴 向いているケース
scp / rsync 都度コピー、差分転送 バックアップ・大量ファイル転送
vi / vim(直接編集) SSHログイン後にCLIで編集 1ファイルの簡単な修正
sshfs ローカルのエディタやGUIで透過的に扱える 複数ファイルの継続的な開発・編集

VSCodeのRemote-SSHと似ていますが、sshfsはコマンドラインで完結するため、エディタを選ばないのが強みです。リモートサーバーをローカルのNASのように扱えるイメージです。

sshfsのインストール方法

1. RHEL 9 / AlmaLinux 9 / Rocky Linux 9 の場合

RHELベースのディストリビューションでは、fuse-sshfsパッケージをインストールします。EPELリポジトリが必要です。

# EPELリポジトリを有効化(未設定の場合) $ sudo dnf install -y epel-release # sshfsをインストール $ sudo dnf install -y fuse-sshfs # バージョン確認 $ sshfs --version SSHFS version 3.7.3 FUSE library version 3.16.2 using FUSE kernel module interface version 7.38

2. Ubuntu 24.04 LTS / Debian の場合

# sshfsをインストール(sshfsパッケージにfuse3が含まれる) $ sudo apt install -y sshfs # バージョン確認 $ sshfs --version SSHFS version 3.7.3

インストール後、一般ユーザーがFUSEを使えるようfuseグループにユーザーを追加します(Ubuntuでは通常不要、RHELでは設定が必要なことがあります)。

# 自分自身をfuseグループに追加(RHELで必要な場合) $ sudo usermod -aG fuse $(whoami) # グループ変更を反映(一度ログアウト・ログインするか、newgrpで即時反映) $ newgrp fuse

基本的なマウント方法

3. マウントポイントの作成

まず、リモートファイルシステムをマウントするためのディレクトリ(マウントポイント)を作成します。

# マウントポイントを作成 $ mkdir -p ~/remote-server # ディレクトリが作成されたことを確認 $ ls -la ~/ drwxr-xr-x. 2 tomohiro tomohiro 6 5月 31 10:00 remote-server

4. sshfsでマウントする

基本的な構文は次の通りです。

# 書式: sshfs [ユーザー名]@[ホスト]:[リモートパス] [ローカルマウントポイント] $ sshfs tomohiro@192.168.1.100:/var/www/html ~/remote-server # 接続確認(実サーバーの出力例) $ ls ~/remote-server index.php config.php public storage vendor # dfコマンドでマウントされていることを確認 $ df -h ~/remote-server Filesystem Size Used Avail Use% Mounted on tomohiro@192.168.1.100:/var/www/html 50G 18G 30G 38% /home/tomohiro/remote-server

これだけで、~/remote-server以下のファイルを、ローカルのファイルと全く同じように操作できます。テキストエディタやIDEからも透過的にアクセスできます。

5. SSHの秘密鍵を指定してマウントする

パスワード認証ではなく公開鍵認証を使う場合(これが推奨です)は、-o IdentityFileオプションで秘密鍵を指定します。

# 秘密鍵を指定してマウント $ sshfs -o IdentityFile=~/.ssh/id_rsa tomohiro@192.168.1.100:/var/www/html ~/remote-server # ~/.ssh/configに設定済みのHost名で指定することも可能 $ sshfs webserver01:/var/www/html ~/remote-server

SSH設定ファイルに接続情報をまとめておくと、sshfsのコマンドも短くなります。Linuxのポート確認とSSH接続のトラブルシュートについては別記事で詳しく解説しています。

よく使うオプションと実務Tips

sshfsには接続を快適にするオプションがいくつかあります。現場でよく使う設定をまとめます。

オプション 説明 使いどころ
reconnect 切断時に自動再接続する 長時間作業・不安定回線
ServerAliveInterval=15 15秒ごとに疎通確認パケットを送る タイムアウト防止
Compression=yes SSHレベルで圧縮転送する 低速回線・テキストファイル多い場合
allow_other マウントユーザー以外もアクセス可能 複数ユーザーで共有する場合
uid=1000,gid=1000 マウントしたファイルのUID/GIDを強制指定 パーミッション不一致の解消
port=2222 SSHポートを指定する デフォルト22番以外のポート

実務でよく使う組み合わせコマンドです。

# 長時間作業向けの推奨設定 $ sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 tomohiro@192.168.1.100:/var/www/html ~/remote-server # 非標準ポートへの接続 $ sshfs -o port=2222 tomohiro@192.168.1.100:/home/deploy ~/remote-server

アンマウントの方法

sshfsでマウントしたファイルシステムをアンマウントするには、fusermount3 -uコマンドを使います(古い環境ではfusermount -u)。

# アンマウント(Linux標準のumountと異なるコマンドを使う) $ fusermount3 -u ~/remote-server # アンマウント確認 $ df -h ~/remote-server df: /home/tomohiro/remote-server: mountpoint not found # sudoが使える環境ではumountも使用可能 $ sudo umount ~/remote-server

Transport endpoint is not connected」というエラーが出てアンマウントできない場合は、-z(lazy unmount)オプションを使います。

# 強制アンマウント(Transport endpoint is not connected の場合) $ fusermount3 -uz ~/remote-server

起動時に自動マウントする方法

毎回手動でマウントするのは手間がかかります。/etc/fstabを使うか、systemdの.mountユニットで自動マウントを設定できます。

6. /etc/fstabで自動マウントを設定する

/etc/fstabに以下の形式で追記します。SSHキー認証が前提です。パスワード認証では起動時に止まります。

# /etc/fstab に追記(rootで編集) # 書式: [ユーザー]@[ホスト]:[リモートパス] [ローカルパス] fuse.sshfs [オプション] 0 0 tomohiro@192.168.1.100:/var/www/html /mnt/remote-server fuse.sshfs IdentityFile=/home/tomohiro/.ssh/id_rsa,_netdev,allow_other,reconnect,ServerAliveInterval=15 0 0 # fstabが正しいか確認してマウント $ sudo mount -a # マウント確認 $ mount | grep fuse.sshfs tomohiro@192.168.1.100:/var/www/html on /mnt/remote-server type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,allow_other)

_netdevオプションは「ネットワーク接続後にマウントする」という指示です。これを忘れると起動時にネットワークが上がる前にマウントしようとして失敗します。mountコマンドの詳細についてはmountコマンドとfstabの使い方を参照してください。

トラブルシュート|よくあるエラーと対処法

「Connection reset by peer」が出てマウントできない

SSH接続自体はできるのにsshfsが失敗する場合、SSHサーバー側でSFTPサブシステムが無効になっている可能性があります。

# リモートサーバー側の/etc/ssh/sshd_configを確認 $ grep -i sftp /etc/ssh/sshd_config Subsystem sftp /usr/lib/openssh/sftp-server # この行が必要 # sshd_configにSFTP設定がない場合は追記して再起動 $ sudo systemctl restart sshd

sshd_configの設定全般についてはsshd_configの設定ガイドも参考にしてください。

「fuse: device not found, try 'modprobe fuse'」が出る

# fuseカーネルモジュールをロード $ sudo modprobe fuse # 永続化(起動時に自動ロード) $ echo fuse | sudo tee /etc/modules-load.d/fuse.conf

マウントはできるがファイルが見えない・Permission denied

UID/GIDの不一致が原因のことが多いです。-o uid=-o gid=でローカルのユーザーIDに合わせます。

# 自分のUID/GIDを確認 $ id uid=1000(tomohiro) gid=1000(tomohiro) groups=1000(tomohiro),10(wheel) # UID/GIDを指定してマウント $ sshfs -o uid=1000,gid=1000 tomohiro@192.168.1.100:/var/www/html ~/remote-server

本記事のまとめ

sshfsコマンドを使えば、リモートサーバーのファイルシステムをローカルのディレクトリとして透過的に扱えます。特別なサーバー設定は不要で、すでにSSH接続できる環境であればすぐに使えるのが最大の利点です。

やりたいこと コマンド・設定
基本的なマウント sshfs ユーザー@ホスト:リモートパス ローカルパス
秘密鍵を指定してマウント sshfs -o IdentityFile=~/.ssh/id_rsa ユーザー@ホスト:リモートパス ローカルパス
タイムアウト防止で長時間マウント sshfs -o reconnect,ServerAliveInterval=15 ユーザー@ホスト:リモートパス ローカルパス
アンマウント fusermount3 -u ローカルパス
強制アンマウント(接続切れ後) fusermount3 -uz ローカルパス
fstabで自動マウント ユーザー@ホスト:リモートパス ローカルパス fuse.sshfs _netdev,IdentityFile=... 0 0
パーミッション不一致の解消 sshfs -o uid=1000,gid=1000 ユーザー@ホスト:リモートパス ローカルパス

日常的なファイル編集作業にはsshfs、大量ファイルの一括転送にはrsync、という使い分けを覚えておくと効率が上がります。SSH経由の安全な接続を活かしつつ、リモートサーバーとのファイル操作を快適にしてください。

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、Linuxサーバー構築入門マニュアル(図解60P)を無料でお渡ししています。

>> Linuxサーバー構築入門マニュアル(図解60P)を無料で受け取る

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。