開発者ドキュメント

SSHFSを使用してSSH経由でリモートファイルシステムをマウントする方法

序章

SFTP またはSCPのいずれかを使用して、SSH接続を介してファイルを転送することは、サーバー間で少量のデータを移動する一般的な方法です。 ただし、場合によっては、2つのリモート環境間でディレクトリ全体またはファイルシステム全体を共有する必要があります。 これはSMBまたはNFSマウントを構成することで実現できますが、どちらも追加の依存関係が必要であり、セキュリティ上の懸念やその他のオーバーヘッドが発生する可能性があります。

別の方法として、 SSHFS をインストールして、SSHのみを使用してリモートディレクトリをマウントすることもできます。 これには、追加の構成を必要とせず、リモートシステムのSSHユーザーからアクセス許可を継承するという大きな利点があります。 SSHFSは、大量のファイルセットから個別にインタラクティブに読み取る必要がある場合に特に便利です。

前提条件

ステップ1—SSHFSのインストール

SSHFSは、ほとんどのLinuxディストリビューションで使用できます。 Ubuntuでは、を使用してインストールできます apt.

まず、 apt update パッケージソースを更新するには:

  1. sudo apt update

次に、 apt install インストールするには sshfs パッケージ。

  1. sudo apt install sshfs

注: SSHFSは、Linux環境との相互運用性を提供する FUSE と呼ばれるファイルシステムライブラリを使用して、MacまたはWindowsにインストールできます。 これらは、このチュートリアルと同じ概念と接続の詳細を使用しますが、異なる構成インターフェイスを使用するか、サードパーティのライブラリをインストールする必要がある場合があります。 このチュートリアルでは、LinuxでのSSHFSのみを取り上げますが、これらの手順をMacまたはWindowsのFUSE実装に適合させることができるはずです。

SSHFS for Windowsは、プロジェクトのGitHubリポジトリからインストールできます。

macFUSEProjectからMac用SSHFSをインストールできます。

ステップ2—リモートファイルシステムのマウント

Linux環境でリモートファイルシステムをマウントする場合は常に、最初にそれをマウントするための空のディレクトリが必要です。 ほとんどのLinux環境には、 /mnt この目的のために、内部にサブディレクトリを作成できます。

注: Windowsでは、リモートファイルシステムが次のような独自のドライブ文字でマウントされることがあります。 G:、およびMacでは、通常、 /Volumes ディレクトリ。

内にサブディレクトリを作成します /mnt と呼ばれる droplet を使用して mkdir 指図:

  1. sudo mkdir /mnt/droplet

これで、を使用してリモートディレクトリをマウントできます。 sshfs.

  1. sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet

このコマンドのオプションは次のように動作します。

あなたが受け取った場合 Connection reset by peer メッセージが表示されたら、SSHキーをリモートシステムコピーしたことを確認してください。 sshfs バックグラウンドで通常のSSH接続を使用し、SSHを介してリモートシステムに初めて接続する場合は、リモートホストのキーフィンガープリントを受け入れるように求められる場合があります。

Output
The authenticity of host '164.90.133.64 (164.90.133.64)' can't be established. ED25519 key fingerprint is SHA256:05SYulMxeTDWFZtf3/ruDDm/3mmHkiTfAr+67FBC0+Q. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

注:SSHFSを使用してリモートディレクトリをマウントする必要がある場合 sudo 権限、あなたはと呼ばれるユーザーグループを作成することができます fuse ローカルマシンで、 sudo groupadd fuse、次に、を使用してローカルユーザーをそのグループに追加します sudo usermod -a -G fuse sammy.

使用できます ls マウントされたディレクトリ内のファイルを一覧表示して、リモートディレクトリの内容と一致するかどうかを確認します。

  1. ls /mnt/droplet
Output
remote_file1 remote_file2

これで、ローカルマシンに接続された物理デバイスであるかのように、リモートサーバー上のファイルを操作できます。 たとえば、でファイルを作成する場合 /mnt/droplet ディレクトリの場合、ファイルは仮想サーバーに表示されます。 同様に、ファイルをコピーしたり、ファイルからコピーしたりできます。 /mnt/droplet フォルダとそれらはバックグラウンドでリモートサーバーとの間でアップロードされます。

に注意することが重要です mount コマンドは、現在のセッションのリモートディスクのみをマウントします。 仮想サーバーまたはローカルマシンの電源をオフにするか再起動した場合は、同じプロセスを使用して再度マウントする必要があります。

このマウントが不要になった場合は、 umount 指図:

  1. sudo umount /mnt/droplet

最後のステップでは、パーマネントマウントを構成する例について説明します。

ステップ3—リモートファイルシステムを永続的にマウントする

他のタイプのディスクおよびネットワークマウントと同様に、SSHFSを使用して永続マウントを構成できます。 これを行うには、次の名前のファイルに構成エントリを追加する必要があります /etc/fstab、起動時にLinuxファイルシステムのマウントを処理します。

使用する nano またはお気に入りのテキストエディタを開きます /etc/fstab:

  1. sudo nano /etc/fstab

ファイルの最後に、次のようなエントリを追加します。

/ etc / fstab
sammy@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/sammy/.ssh/id_rsa,allow_other,default_permissions 0 0

パーマネントマウントでは、期待どおりに動作するように、このようなさまざまなオプションが必要になることがよくあります。 それらは次のように機能します。

ファイルを保存して閉じます。 使用している場合 nano、 押す Ctrl+X、プロンプトが表示されたら、 Y その後 ENTER. その後、テストすることができます /etc/fstab ローカルマシンを再起動して構成します。たとえば、 sudo reboot now、マウントが自動的に再作成されることを確認します。

永続的なSSHFSマウントは必ずしも一般的ではないことに注意してください。 SSH接続とSSHFSの性質は、通常、より高い冗長性やその他のオプションで構成できるSMBまたはNFSマウントにコミットする必要がない場合に、一時的な1回限りのソリューションに適していることを意味します。 とはいえ、SSHFSは非常に柔軟性があり、さらに重要なことに、本格的なファイルシステムドライバーとして機能します。これにより、SSHFSを構成できます。 /etc/fstab 他のディスクマウントと同じように、必要なだけ使用します。 意図したよりも多くのリモートファイルシステムをSSH経由で誤って公開しないように注意してください。

結論

このチュートリアルでは、あるLinux環境から別のLinux環境へのSSHFSマウントを構成しました。 これは実稼働環境で最もスケーラブルまたはパフォーマンスの高いソリューションではありませんが、SSHFSは最小限の構成で非常に役立ちます。

次に、複数のサーバーに同時にマウントできるオブジェクトストレージの操作について学習することをお勧めします。

モバイルバージョンを終了