SSHFSでサーバのファイルをマウント【Linux】

Linux

「サーバ上のファイルを、ファイル転送などを意識せずにローカルで扱いたいな」

と思っていたところ、「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, ラズパイなどについても解説していますので、ぜひご覧ください。

以上、読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました