「サーバ上のファイルを、ファイル転送などを意識せずにローカルで扱いたいな」
と思っていたところ、「SSHFS」なるコマンドの存在を知りました。
本記事では
- SSHFSとは?
- SCP, NFSとの違い
- 導入・設定方法
を解説します。
SSHFSとは?
SSHFS(SSH File System)とは、SSH接続を使ってリモートサーバのファイルシステム(ファイルやディレクトリ)を、ローカルにマウントする仕組みです。
通常ユーザの権限で使用することができます。(sudo不要!)
また暗号化通信を実現しています。
SCP, NFSとの違い
SCP
scpコマンドはSSHコマンドを使ったファイルコピーのコマンドです。
マウントは行わないため、リモート・ローカルのそれぞれの変更が自動で反映されないので、
「ファイルを同期したい!」という目的には向きません。
NFS
nfsはネットワークを用いてディレクトリをマウントするファイルシステムです。
OSレベルで統合するシステムで、使用には管理者権限が必要です。
LAN内で使う際は、暗号化を行う必要がなく、sshfsより高速です。
使い方
前提条件として、ローカルからリモートのサーバへSSH接続できる必要があります。
まずはsshコマンドでリモートへログオンできることを確認しましょう。
導入方法
今回は、
- リモート・ローカルともにRed Hat Enterprise Linux(RHEL)9
の環境での設定例を示します。
多くのLinuxのディストリビューションでも同様の操作となります。
まず、EPELリポジトリを有効化します。
sudo dnf install epel-release
有効化できたか確認しましょう。
dnf repolist | grep epel
次のように出力されます。
$ dnf repolist | grep epel
epel Extra Packages for Enterprise Linux 9 - x86_64
sshfsをインストールします。
sudo dnf install sshfs
では、sshfsコマンドが使えるか確認しましょう。
$ sshfs -V
SSHFS version 3.7.3
FUSE library version 3.10.2
using FUSE kernel interface version 7.31
fusermount3 version: 3.10.2
FUSEのバージョンも併せて表示されます。
以上でsshfsのインストールが完了しました。
設定方法
sshfsの設定を行います。
まずは、クライアント(手元のPCなど)側で、マウント先となるディレクトリを作ります。
今回はホームディレクトリ(~)上に「mnt_remote」という名前でディレクトリを作成します。
mkdir ~/mnt_remote
では、作ったディレクトリ「mnt_remote」に、リモートのディレクトリ「~/data」をマウントします。
ここでは、リモートのユーザ名を「user」、リモートのホスト名を「server」とします。
ホスト名はサーバのIPアドレスや、~/.ssh/known_hostsで設定した文字列にします。
sshfs user@server:/home/user ~/mnt_remote
成功すれば、何もエラー文などが表示されないはずです。
実際に~/mnt_remoteディレクトリでファイルを作り、リモートサーバに反映されるか確かめてみましょう。
touch a
サーバ上でlsすると、ファイルが出来ていることが確認できます。
おわりに
sshfsについて解説しました。
既存のSSHの設定を使い、root権限を必要とせずにマウントできるのが強みですね。
本ブログではLinuxサーバやPython, ラズパイなどについても解説していますので、ぜひご覧ください。
以上、読んでいただきありがとうございました。


コメント