あたかもローカル ディレクトリであるかのようにリモート ディレクトリで作業する方が便利だと思いませんか? SCP、SFTP、または FTP を使用してファイルをリモートでプッシュおよびプルする代わりに、それらのファイルを直接管理できたらどうでしょうか?幸運なことに、SSHFS マウントは、このジレンマに対する迅速な解決策です。
このチュートリアルでは、ローカル マシン上のリモート ディレクトリの内容にアクセスできるように、SSHFS マウントを使用する方法を説明します。 Windows ユーザーでも Linux ユーザーでも、このチュートリアルでカバーできます。
このチュートリアルの特定の使用例では、リモート サーバーの SSHFS マウント ディレクトリで Web サイトのコンテンツを更新する方法を示します。ただし、一般的な概念は特定の状況に適用する必要があり、Web サーバーのみに限定されません。
前提条件
このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものが揃っていることを確認してください:
- Linux Web サーバー – このチュートリアルでは、
wbserver
という名前の Fedora 35 を使用します。 Apache HTTP サーバーがインストールされている。このサーバーには、SSHFS マウントのターゲットとなるリモート ディレクトリが含まれています。 - Linux クライアント – このチュートリアルでは、
fedora
という名前の Fedora 35 クライアントを使用します。 . - Windows クライアント (Windows 7 以降) – このチュートリアルでは、
win10pc
という名前の Windows 10 クライアントを使用します。 .
リモート ディレクトリの準備
このチュートリアルは、wbserver
のリモート ディレクトリで作業します。 /var/www/html
というサーバー .デフォルトでは、root アカウントのみがこのフォルダーにアクセスできます。サーバーのルート アカウントを使用しないため、代わりに、指定されたユーザー アカウントにディレクトリへのアクセス許可を付与する必要があります。
この例では、マウントして SSHFS マウントにアクセスするために指定されたユーザー アカウントは adm1
です。 .以下の手順に従って adm1
を付与します。 /var/www/html
への適切な権限 wbserver
で .
1. wbserver
にログインします お好みの SSH クライアントを使用してください。
2. 次に、次のコマンドを実行して、adm1 ユーザーに /var/www/html フォルダーへのフル アクセス (rwx) 権限を付与します。
sudo setfacl -m u:adm1:rwx /var/www/html
3. 最後に、以下のコマンドを実行して、権限が正しいことを確認します。
sudo getfacl -a /var/www/html
以下に示すように、adm1 にはフォルダーへの読み取り/書き込みアクセス権が付与されています。

Linux での SSHFS マウントの使用
SSHFS は主に Linux ツールであり、いくつかのコマンドを発行するだけで、リモート ディレクトリをコンピューターにマウントできます。パッケージをインストールして SSHFS マウントを有効にすることは、ディストリビューションのパッケージ マネージャーを介して Linux に他のパッケージをインストールするのと同じくらい便利です。
SSHFS のインストールとリモート ディレクトリのマウント
以下の手順に従って、SSHFS マウント パッケージをインストールし、リモート ディレクトリをローカル パスにマウントします。
1. 環境に応じて、SSH またはデスクトップ経由で Linux クライアントにログインします。
2. パッケージ マネージャーを使用して次のコマンドを実行し、fuse-sshfs パッケージをインストールします。
注:Debian ベースの Linux ディストリビューションでは、パッケージ名は sshfs です。
sudo dnf install -y fuse-sshfs
パッケージ マネージャーは、コンピューターにまだ存在しない依存関係もインストールします。また、各パッケージのサイズは 100 KB 未満であるため、ダウンロードとインストールは数秒で完了します。

3. 次に、ホーム ディレクトリの下に mnt という名前の新しいフォルダーを作成します。この新しいフォルダーは、リモート ディレクトリのマウント ポイントです。
mkdir ~/mnt
4. マウント ポイントを作成したら、以下の sshfs コマンドを実行します。
このコマンドは、web サーバー (wbserver) のリモート ディレクトリ (/var/www/html) を、アクセスに adm1 の認証情報を使用して作成したローカル マウント ポイント (~/mnt) にマウントします。
sshfs [email protected]:/var/www/html ~/mnt
SSH サーバーがデフォルトのポート 22 をリッスンしていない場合は、sshfs コマンドで -o port
スイッチを指定する必要があります。たとえば、リモート サーバーがポート 2222 をリッスンする場合、コマンドは sshfs -o port 2222 になります。
5. 初めてサーバーに接続する場合は、the
を確認してください Y
を押して接続 プロンプトで — アカウントのパスワードを入力し、Enter
を押します .

6. 最後に、以下のコマンドを実行して、リモート ディレクトリが正常にマウントされたことを確認します。
findmnt
リモート ディレクトリが、指定したローカル ディレクトリにマウントされていることがわかります。

起動時に自動マウントを有効にする
リモート ディレクトリを正常にマウントしても、このマウント ステータスは永続的ではないことに注意してください。コンピュータを再起動しても、リモート ディレクトリは自動マウントされません。
ただし、 /etc/fstab
を編集することで、コンピューターの再起動後も SSHFS マウントを存続させることができます。 ファイルと adm1
のキーベース認証を有効にする アカウント。 SSH キーベースの認証を有効にすると、SSHFS マウントが完全に自動化されます (パスワード プロンプトは表示されません)。
1. Linux クライアントで、以下のコマンドを実行して新しい SSH キー ペアを生成します。
ssh-keygen
Enter file in which to save the key プロンプトで、キー ファイル名を入力し、Enter キーを押します。この例では、保存するキー ファイル名は /home/user1/.ssh/[email protected] です
パスフレーズを空のままにして、Enter キーを 2 回押します。以下のスクリーンショットは、鍵ペアの作成結果を示しています。

2. 次に、キーを Web サーバーにコピーします。以下のコマンドは、以前に生成したキー (/home/user1/.ssh/[email protected]) を wbserver の adm1 アカウントにインストールします。
ssh-copy-id -i /home/user1/.ssh/[email protected] [email protected]
プロンプトで [email protected] のパスワードを入力し、Enter キーを押します。以下に示すように、コマンドはキーをサーバーに正常にインストールしました。

3. キー ペアを使用して wbserver に SSH 接続し、キー ベースのログインが機能することを確認します。
ssh -i /home/user1/.ssh/[email protected] [email protected]
その結果、ログインはパスワードを求められずに成功するはずです。 exit と入力して Enter キーを押し、wbserver からログアウトします。

4. SSHFS ユーザー アカウントの SSH キーベースの認証を構成したので、永続的な SSHFS マウントを構成する準備が整いました。
/etc/fstab ファイルをテキスト エディターで開きます。
sudo nano /etc/fstab
5. 以下のコードを /etc/fstab ファイルの末尾に追加します。 identityfile=の値を SSH キー ファイル パスに変更してください。
[email protected]:/var/www/html /home/user1/mnt fuse.sshfs identityfile=/home/user1/.ssh/[email protected],allow_other,_netdev 0 0

6. 編集後、ファイルを保存し、テキスト エディタを閉じて、コンピュータを再起動します。以下に示すように、SSHFS マウントは再起動後に再び利用可能になります。

SSHFS マウントのテスト
これで、リモート ディレクトリがローカル コンピューターにマウントされました。問題は、「それは機能しますか?」ということです。確認する最も簡単なテストは、新しいファイルを作成し、それを SSHFS マウント ポイントに保存することです。作成したファイルがサーバーに表示されます。
デフォルトでは、 /var/www/html Web サーバー上のフォルダーは空です。 https://wbserver でホストされている Web サイトにアクセスしたとき 、下のスクリーンショットのように、デフォルトのテスト ページのみが表示されます。

この例では、新しいホームページを作成し、ウェブサーバーがその新しいページを表示することを確認します。
1. 作業ディレクトリを SSHFS マウント ポイント ~/mnt に切り替えます。
cd ~/mnt
2. touch コマンドを実行して index.html ファイルを作成し、テキスト エディターで開きます。
touch index.html && nano index.html
3. ここで、index.html ファイルに以下の HTML コードを入力し、ファイルを保存してエディターを終了します。
Welcome
I was put here over SSH by SSHFS
以下のスクリーンショットは、index.html ファイルの予期されるコンテンツを示しています。

4. 最後に、Web ブラウザーで Web サイトの URL を再度開きます。以下に示すように、Web サーバーは新しいホームページを取得して表示する必要があります。

おめでとう!これで、Linux コンピューターに SSHFS マウントが正常に実装されました。手動で変更するためにリモート ファイルをアップロードまたはダウンロードする必要はありません。
リモート ディレクトリのアンマウント
SSHFS マウント経由でリモート ディレクトリにアクセスする必要がなくなり、マウントを解除したい場合は、次のいずれかのコマンドを実行します。
sshfs
を使用してリモート ディレクトリをインタラクティブにマウントした場合は、次のコマンドを実行します。
fusermount -u /home/user1/mnt
fstab でリモート ディレクトリを自動マウントした場合 、代わりに以下のコマンドを実行します。さらに、fstab の SSHFS 自動マウント エントリを削除する必要があります。 .そうでない場合、リモート ディレクトリは再起動後に再び自動マウントされます。
sudo umount /home/user1/mnt
Windows での SSHFS マウントの使用
Windows コンピューターは、ネットワークの場所を、FTP サイト、ネットワーク共有、SharePoint ライブラリなどのローカル ドライブとしてマップできます。 Linux に SSHFS を移植した SSHFS-Win というプログラムをインストールすることで、Windows に SSHFS マウント ドライブを追加することもできます。
WinFsp と SSHFS-Win のインストール
SSHFS-Win では、基礎となる FUSE 機能を提供するため、WinFsp が機能する必要があります。以下の手順に従って、WinSfp と SSHFS-Win の両方をインストールしてください。
1. Windows クライアントでブラウザーを開き、WinSfp (v1.10) および SSHFS-Win (v3.5.20357) の最新リリースをダウンロードします。
2. ダウンロードしたインストーラーを見つけて、最初に WinSfp インストーラーを実行します。

3. [WinFsp 2022 セットアップ ウィザードへようこそ] ページで [次へ] をクリックします。

4. すべての機能を選択し、[次へ] をクリックします。

5. [WinFsp 2022 をインストールする準備ができました] ページで [インストール] をクリックします。

6. WinFsp のインストール後、[完了] をクリックします。

7. 次に、SSHFS-Win インストーラーを起動します。

8. 以下に示すように、最初の画面で [次へ] をクリックして、インストール プロセスを開始します。

9. [カスタム セットアップ] ページで [次へ] をクリックします。

10. [SSHFS-Win をインストールする準備ができました] ページで、[インストール] をクリックします。

11. 最後に、[完了] をクリックしてセットアップ ウィザードを終了します。

SSHFS パスの理解 構文
SSHFS マウント経由でリモート ディレクトリをマッピングする前に、以下のリストを確認して、SSHFS-Win がリモート パスを解釈する方法を理解してください。
\\\\PREFIX\\[email protected][!PORT][\\PATH]
REMUSER
リモート サーバーでの認証に使用する資格情報を持つリモート ユーザーです。HOST
リモート サーバーのホスト名または IP アドレスです。PORT
は、リモート サーバーの SSH リッスン ポートです。この値はオプションで、デフォルトはポート 22 です。PATH
PREFIX
を基準としたリモート パスです。 .さまざまなプレフィックスは次のとおりです。sshfs
– ユーザーのホーム ディレクトリからの相対パスにマップします (つまり、HOST:~REMUSER/PATH
).sshfs.r
– ホストのルート ディレクトリからの相対パスにマップします (つまり、HOST:/PATH
)sshfs.k
– ユーザーのホーム ディレクトリからの相対パスにマップします (つまり、HOST:~REMUSER/PATH
)、SSH キーベースの認証を使用します。このプレフィックスは%USERPROFILE%/.ssh/id_rsa
のキーを使用します 認証のためsshfs.kr
– ホストのルート ディレクトリからの相対パスにマップします (つまり、HOST:/PATH
)、%USERPROFILE%/.ssh/id_rsa
のキーを使用します 認証のため
Windows ファイル エクスプローラーを使用したリモート ディレクトリのマウントとアンマウント
Windows でネットワーク ドライブをマップする 1 つの方法は、Windows ファイル エクスプローラーを使用することです。この方法では、コマンドを実行する必要はなく、ウィザード形式の GUI ですべてのステップを実行できます。
1. ファイル エクスプローラー ウィンドウを開き、[この PC] をクリックします。 —> コンピュータ —> ネットワーク ドライブのマッピング .

2. ドライブ文字を選択し、以下のパスを [フォルダー] ボックスに入力して、\var\www\html フォルダーをマウントします。
\\sshfs.r\[email protected]\var\www\html
[サインイン時に再接続] オプションをオンのままにして、[完了] をクリックします。

3. アカウントのパスワードを入力し、[記憶する] ボックスをオンにして、[OK] をクリックします。

これで、SSHFS マウントにドライブ文字がマップされました。また、[サインイン時に再接続] オプションと [記憶する] オプションを有効にしたため、Windows はコンピューターの再起動後に SSHFS マウントに再接続します。

4. この時点で、リモート ディレクトリのファイルを管理できるようになります。ただし、マップされたドライブが不要になり削除したい場合は、SSHFS マウントを右クリックして [切断] をクリックします。

コマンド ラインを使用したリモート ディレクトリのマウントとアンマウント
net use コマンドは、Windows でリモート ディレクトリをマップするもう 1 つの方法です。コマンド ラインを介して SSHFS マウント ドライブをマッピングすると、スクリプト作成と自動化に役立ちます。
リモート ディレクトリをマウントするには、コマンド プロンプトまたは PowerShell を開き、次のコマンドを実行して \\var\\www\\html
をマップします。 ローカル コンピュータのドライブ Z
へのリモート ディレクトリ . PASSWORD
を必ず変更してください 値をリモート ユーザーのパスワードに置き換えます。
net use Z: \\\\sshfs.r\\[email protected]\\var\\www\\html PASSWORD /user:adm1

コマンド ライン delete
を使用して SSHFS マウント ドライブを削除するには ドライブ Z:
へのマッピング 以下のコマンドを実行してください。
net use Z: /delete

SSHFS マウントのテスト
ローカルにマップされたネットワーク ドライブにアクセスできるようになったので、他のローカル ファイルと同様に、リモート ディレクトリのファイルを管理できます。この例では、マップされた SSHFS ドライブから Web サイトのホームページを直接更新します。
1. ファイル エクスプローラーを開き、マップされたドライブに移動します。
2. index.html というファイルを開きます メモ帳などのテキストエディタでファイルが存在しない場合は、最初に作成してください。

3. 以下の HTML コードをコピーして、index.html に貼り付けます。 ファイルを保存します。
Welcome
I was put here over SSH by SSHFS
Brought to You from Windows 10

4. 最後に、Web ブラウザを開き、Web サイトの URL HTTP://wbserver に移動します。 .編集した更新されたホームページが表示され、SSHFS マウントが意図したとおりに機能することが確認されます。

結論
これで、このチュートリアルは終わりです。 SSHFS マウントを使用して、リモート SSH サーバーからローカルの Windows または Linux コンピューターにディレクトリをマップする方法を学習しました。 SSHFS は、利便性とリモート ファイル アクセス セキュリティのための優れたツールです。
セキュリティについて言えば、次のステップとして、Fail2Ban で SSH を保護する方法を確認する必要がありますか?頑張ってください!