序章
SFTP またはSCPのいずれかを使用して、SSH接続を介してファイルを転送することは、サーバー間で少量のデータを移動する一般的な方法です。 ただし、場合によっては、2つのリモート環境間でディレクトリ全体またはファイルシステム全体を共有する必要があります。 これはSMBまたはNFSマウントを構成することで実現できますが、どちらも追加の依存関係が必要であり、セキュリティ上の懸念やその他のオーバーヘッドが発生する可能性があります。
別の方法として、 SSHFS をインストールして、SSHのみを使用してリモートディレクトリをマウントすることもできます。 これには、追加の構成を必要とせず、リモートシステムのSSHユーザーからアクセス許可を継承するという大きな利点があります。 SSHFSは、大量のファイルセットから個別にインタラクティブに読み取る必要がある場合に特に便利です。
前提条件
- それらの間のSSHアクセスを許可するように構成された2つのLinuxサーバー。 これらの1つは、クラウドサーバーではなくローカルマシンにすることができます。 これを実現するには、サーバーの初期設定ガイドに従い、あるマシンから別のマシンに直接接続します。
ステップ1—SSHFSのインストール
SSHFSは、ほとんどのLinuxディストリビューションで使用できます。 Ubuntuでは、を使用してインストールできます apt
.
まず、 apt update
パッケージソースを更新するには:
- sudo apt update
次に、 apt install
インストールするには sshfs
パッケージ。
- 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
指図:
- sudo mkdir /mnt/droplet
これで、を使用してリモートディレクトリをマウントできます。 sshfs
.
- sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet
このコマンドのオプションは次のように動作します。
-o
その他のマウントオプションの前にあります(これは、mount
非SSHディスクマウントの場合は通常コマンド)。 この場合、使用していますallow_other
他のユーザーがこのマウントにアクセスできるようにするため(通常のディスクマウントのように動作するように)sshfs
デフォルトでこれを防ぎます)、およびdefault_permissions
(それ以外の場合は、通常のファイルシステム権限を使用します)。sammy@your_other_server:~/
リモートユーザー名を含む、リモートディレクトリへのフルパスを提供します。sammy
、リモートサーバー、your_other_server
、およびパス(この場合)~/
リモートユーザーのホームディレクトリ用。 これは、SSHまたはSCPと同じ構文を使用します。/mnt/droplet
マウントポイントとして使用されているローカルディレクトリへのパスです。
あなたが受け取った場合 Connection reset by peer
メッセージが表示されたら、SSHキーをリモートシステムにコピーしたことを確認してください。 sshfs
バックグラウンドで通常のSSH接続を使用し、SSHを介してリモートシステムに初めて接続する場合は、リモートホストのキーフィンガープリントを受け入れるように求められる場合があります。
OutputThe 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
マウントされたディレクトリ内のファイルを一覧表示して、リモートディレクトリの内容と一致するかどうかを確認します。
- ls /mnt/droplet
Outputremote_file1 remote_file2
これで、ローカルマシンに接続された物理デバイスであるかのように、リモートサーバー上のファイルを操作できます。 たとえば、でファイルを作成する場合 /mnt/droplet
ディレクトリの場合、ファイルは仮想サーバーに表示されます。 同様に、ファイルをコピーしたり、ファイルからコピーしたりできます。 /mnt/droplet
フォルダとそれらはバックグラウンドでリモートサーバーとの間でアップロードされます。
に注意することが重要です mount
コマンドは、現在のセッションのリモートディスクのみをマウントします。 仮想サーバーまたはローカルマシンの電源をオフにするか再起動した場合は、同じプロセスを使用して再度マウントする必要があります。
このマウントが不要になった場合は、 umount
指図:
- sudo umount /mnt/droplet
最後のステップでは、パーマネントマウントを構成する例について説明します。
ステップ3—リモートファイルシステムを永続的にマウントする
他のタイプのディスクおよびネットワークマウントと同様に、SSHFSを使用して永続マウントを構成できます。 これを行うには、次の名前のファイルに構成エントリを追加する必要があります /etc/fstab
、起動時にLinuxファイルシステムのマウントを処理します。
使用する nano
またはお気に入りのテキストエディタを開きます /etc/fstab
:
- sudo nano /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
パーマネントマウントでは、期待どおりに動作するように、このようなさまざまなオプションが必要になることがよくあります。 それらは次のように機能します。
sammy@your_other_server:~/
前と同じように、再びリモートパスです。/mnt/droplet
再びローカルパスです。fuse.sshfs
このリモートディレクトリのマウントに使用されているドライバを指定します。noauto,x-systemd.automount,_netdev,reconnect
は、ネットワーク接続がローカルマシンまたはリモートマシンから切断された場合に、ネットワークドライブへの永続的なマウントが正常に動作するように連携して機能する一連のオプションです。identityfile=/home/sammy/.ssh/id_rsa
リモートディレクトリを自動的にマウントできるように、ローカルSSHキーへのパスを指定します。 この例では、ローカルユーザー名とリモートユーザー名の両方がsammy
–これはローカルパスを指します。 これを指定する必要があるのは/etc/fstab
ルートとして効果的に実行され、リモートサーバーによって信頼されているキーをチェックするユーザー名のSSH構成を他の方法では知りません。allow_other,default_permissions
から同じ権限を使用しますmount
上記のコマンド。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は最小限の構成で非常に役立ちます。
次に、複数のサーバーに同時にマウントできるオブジェクトストレージの操作について学習することをお勧めします。