SSH経由でSSHFSを使用してリモートLinuxファイルシステムまたはディレクトリをマウントする方法


この記事を書く主な目的は、SSH経由でSSHFSクライアントを使用してリモートLinuxファイルシステムをマウントする方法のステップバイステップガイドを提供することです。

この記事は、目的を問わず、ローカルシステムにリモートファイルシステムをマウントしたいユーザーやシステム管理者に役立ちます。 Linuxシステムの1つにSSHFSクライアントをインストールし、リモートファイルシステムを正常にマウントすることで、実際にテストを行いました。

さらにインストールする前に、SSHFSとその仕組みについて理解しましょう。

SSHFSとは何ですか?

SSHFSは(Secure SHell FileSystem)クライアントの略で、リモートファイルシステムをマウントし、SSHファイル転送プロトコル(SFTP)を使用してローカルマシン上のリモートディレクトリおよびファイルと対話できるようにします。

SFTPは、セキュアシェルプロトコルを介してファイルアクセス、ファイル転送、およびファイル管理機能を提供するセキュアファイル転送プロトコルです。 SSHは、ネットワークを介して1台のコンピューターから別のコンピューターにファイルを転送するときに暗号化を使用し、SSHFSにはFUSE(Filesystem in Userspace)カーネルモジュールが組み込まれているため、非特権ユーザーはカーネルコードを変更せずにファイルシステムを作成できます。

この記事では、任意のLinuxディストリビューションにSSHFSクライアントをインストールして使用し、リモートのLinuxファイルシステムまたはディレクトリをローカルのLinuxマシンにマウントする方法を示します。

デフォルトでは、sshfsパッケージはすべての主要なLinuxディストリビューションに存在するわけではありません。依存関係のあるYumコマンドを使用して、Linuxシステムでepelリポジトリを有効にしてsshfsをインストールする必要があります。

# yum install sshfs
# dnf install sshfs              [On Fedora 22+ releases]
$ sudo apt-get install sshfs     [On Debian/Ubuntu based systems]

sshfsパッケージをインストールしたら、リモートファイルシステムをマウントするマウントポイントディレクトリを作成する必要があります。たとえば、/mnt/tecmint の下にマウントディレクトリを作成しました。

# mkdir /mnt/tecmint
$ sudo mkdir /mnt/tecmint     [On Debian/Ubuntu based systems]

マウントポイントディレクトリを作成したら、rootユーザーとして次のコマンドを実行して、/mnt/tecmint の下にリモートファイルシステムをマウントします。あなたの場合、マウントディレクトリは何でもかまいません。

次のコマンドは、ローカルシステムの/mnt/tecmint の下にある/home/tecmint というリモートディレクトリをマウントします。 (x.x.x.xをIPアドレスとマウントポイントに置き換えることを忘れないでください)。

# sshfs [email protected]:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other [email protected]:/home/tecmint/ /mnt/tecmint     [On Debian/Ubuntu based systems]

LinuxサーバーがSSHキーベースの認証で構成されている場合は、次のコマンドに示すように、公開キーへのパスを指定する必要があります。

# sshfs -o IdentityFile=~/.ssh/id_rsa [email protected]:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa [email protected]:/home/tecmint/ /mnt/tecmint     [On Debian/Ubuntu based systems]

上記のコマンドをエラーなしで正常に実行すると、/mnt/tecmint の下にマウントされたリモートファイルとディレクトリのリストが表示されます。

# cd /mnt/tecmint
# ls
[[email protected] tecmint]# ls
12345.jpg                       ffmpeg-php-0.6.0.tbz2                Linux                                           news-closeup.xsl     s3.jpg
cmslogs                         gmd-latest.sql.tar.bz2               Malware                                         newsletter1.html     sshdallow
epel-release-6-5.noarch.rpm     json-1.2.1                           movies_list.php                                 pollbeta.sql
ffmpeg-php-0.6.0                json-1.2.1.tgz                       my_next_artical_v2.php                          pollbeta.tar.bz2

df -hTコマンドを実行すると、リモートファイルシステムのマウントポイントが表示されます。

# df -hT
Filesystem                          Type        Size  Used Avail Use% Mounted on
udev                                devtmpfs    730M     0  730M   0% /dev
tmpfs                               tmpfs       150M  4.9M  145M   4% /run
/dev/sda1                           ext4         31G  5.5G   24G  19% /
tmpfs                               tmpfs       749M  216K  748M   1% /dev/shm
tmpfs                               tmpfs       5.0M  4.0K  5.0M   1% /run/lock
tmpfs                               tmpfs       749M     0  749M   0% /sys/fs/cgroup
tmpfs                               tmpfs       150M   44K  150M   1% /run/user/1000
[email protected]:/home/tecmint fuse.sshfs  324G   55G  253G  18% /mnt/tecmint

リモートファイルシステムを永続的にマウントするには、/etc/fstab というファイルを編集する必要があります。これを行うには、お気に入りのエディターでファイルを開きます。

# vi /etc/fstab
$ sudo vi /etc/fstab     [On Debian/Ubuntu based systems]         

ファイルの一番下に移動し、次の行を追加してファイルを保存し、終了します。以下のエントリは、デフォルト設定でリモートサーバーファイルシステムをマウントします。

sshfs#[email protected]:/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 0 0

システムの再起動時にファイルシステムを自動マウントするために、サーバー間でSSHパスワードなしのログインが設定されていることを確認してください。

サーバーがSSHキーベースの認証で構成されている場合は、次の行を追加します。

sshfs#[email protected]:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0

次に、変更を反映するようにfstabファイルを更新する必要があります。

# mount -a
$ sudo mount -a   [On Debian/Ubuntu based systems]

リモートファイルシステムをアンマウントするには、次のコマンドを発行して、リモートファイルシステムをアンマウントします。

# umount /mnt/tecmint

今のところこれですべてです。リモートファイルシステムのマウントで問題が発生したり、サポートが必要な場合は、コメントでお問い合わせください。この記事が非常に役立つと思われる場合は、お友達と共有してください。