如何在 Debian 系統中開機時自動掛載遠端 SSHFS 目錄

若要在 Debian 系統中自動掛載遠端 SSHFS 目錄,請設定非互動式 SSH 驗證,並在 `/etc/ssh/config/ssh/ssh/config/ssh/config/config.json` 檔案中新增 SSHFS 項目/etc/fstab。使用 systemd,您可以選擇在啟動時連接,或啟用啟動時自動掛載,並在首次訪問該目錄時進行連接。當遠端伺服器或網路在啟動期間可能無法使用時,第二種方法非常有用。

本參考文件基於 2026 年 10 月 9 日更新的 Debian 13 “trixie” 版本,包括 SSHFS 3.7.3 和 systemd 257 的相關文件。這些命令僅為配置範例,並非實際部署測試的結果。如果您使用的是其他版本,請查閱您已安裝的 Debian 13 的相關手冊。

選擇何時啟動 SSHFS 連接

要求配置選擇預期行為
啟動後按需提供該目錄使用x-systemd.automount首次存取會觸發遠端掛載。
嘗試在啟動過程中建立遠端連線。忽略x-systemd.automountsystemd 在啟動時會啟動該掛載點。
如果儲存空間不足,允許啟動繼續進行。使用nofail此掛載點並非啟動所必需的依賴項。
應用程式必須等待此存儲新增對該應用程式服務的依賴項應用程式只有在掛載成功後才會啟動。

主要範例使用按需掛載。這一點很重要:啟動的自動掛載並不意味著 SSHFS 連線已經存在。如需自動掛載及其符合掛載單元之間的關係,請參閱 Debian 的systemd 自動掛載手冊。

開始之前

  • Debian 用戶端使用 systemd,您擁有 sudo 權限。
  • 遠端帳戶支援 SFTP,可以存取目標目錄。
  • 用戶端可以連接到遠端主機,包括任何所需的 VPN 或跳轉主機。
  • 你可以透過某種方式驗證遠端伺服器的 SSH 主機金鑰指紋。
  • 本地掛載點為空,且不是關鍵系統目錄。

請將 `<remote username, hostname, directory>`替換files@storage.example.net:/srv/data為您的遠端使用者名稱、主機名稱和目錄。主機名稱僅為佔位符。本機掛載點為 `<local mount point>` /mnt/remote;專用金鑰為 `<directory key> /root/.ssh/sshfs_boot`。

這是一個由管理員管理的系統掛載。它在本機以 root 使用者身分執行,但登入遠端伺服器時使用的是普通使用者身份files,而非遠端 root 使用者。 SSHFS專案文件通常建議以普通使用者身分執行互動式掛載。系統啟動掛載需要進行嚴格的憑證和存取管理。

1. 安裝客戶端軟體包

sudo apt update
sudo apt install sshfs openssh-client
sshfs --version
systemctl --version

在 Debian 用戶端上安裝 SSHFS。遠端系統需要正常運作的 SFTP 服務;它不需要僅為了提供檔案服務而安裝 SSHFS。如果軟體包安裝失敗,請先解決軟體來源或連線問題,然後再編輯啟動設定。

終端機顯示 apt 更新並安裝了 sshfs 和 openssh-client。
在 Debian 系統上安裝 SSHFS 用戶端和 OpenSSH 工具。

2. 準備安裝點和專用鑰匙

sudo install -d -m 0700 /root/.ssh
sudo mkdir -p /mnt/remote
sudo ssh-keygen -t ed25519 -f /root/.ssh/sshfs_boot -N ''
sudo chmod 0600 /root/.ssh/sshfs_boot

請勿覆蓋該路徑下已存在的金鑰。如有必要,請選擇其他名稱並在下文中保持一致。此無人值守範例中故意設定空密碼:啟動期間無人可以解鎖密鑰。保護客戶端,並僅授予遠端帳戶所需的目錄權限。如果您的策略要求使用加密金鑰,請安排託管的無人值守解鎖機制。

金鑰產生選項的詳細說明請參閱 Debian 的ssh-keygen 手冊。在桌面 SSH 代理程式中解鎖的金鑰不會自動提供給系統掛載點。

終端機顯示已建立 root 使用者的 SSH 目錄和 /mnt/remote 掛載點。
在建立專用啟動金鑰之前,請先準備好本機目錄。

3. 授權金鑰並驗證無人值守 SFTP

sudo ssh-copy-id -i /root/.ssh/sshfs_boot.pub files@storage.example.net

在此連線設定過程中,請在接受連線之前,將顯示的主機金鑰指紋與透過可信任頻道從伺服器管理員取得的值進行比較。該命令以本機 root 使用者身分執行,因此通常的主機金鑰記錄儲存在 root 使用者的 SSH 檔案中。如果伺服器上停用了基於密碼的設置,請管理員安裝公鑰。

接下來,使用與啟動掛載點相同的身分和主機金鑰檔案測試 SFTP:

sudo sftp -i /root/.ssh/sshfs_boot \
  -o IdentitiesOnly=yes -o BatchMode=yes \
  -o StrictHostKeyChecking=yes \
  -o UserKnownHostsFile=/root/.ssh/known_hosts \
  files@storage.example.net

在 SFTP 提示字元下,使用 `--host-key` ls /srv/data,然後執行bye`--host-key`。這應該無需密碼或確認提示即可正常工作。 ` --host-key` 會阻止互動式驗證;明確主機金鑰設定可以保留驗證功能。這些選項在OpenSSH 用戶端設定手冊BatchMode=yes中有定義。

對於非預設端口,請-p 2222配合 ssh-copy-id、-P 2222sftp 和port=2222SSHFS 選項使用。如果需要跳轉主機,也請在 root 使用者的 SSH 環境中設定並測試該路由。

終端顯示帶有專用公鑰和範例遠端帳戶的 ssh-copy-id 命令。
為範例遠端帳戶授權專用公鑰;在設定過程中驗證主機指紋。

4. 驗證手動安裝是否有效

sudo sshfs files@storage.example.net:/srv/data /mnt/remote \
  -o IdentityFile=/root/.ssh/sshfs_boot,IdentitiesOnly=yes,BatchMode=yes \
  -o StrictHostKeyChecking=yes,UserKnownHostsFile=/root/.ssh/known_hosts
sudo ls /mnt/remote
sudo umount /mnt/remote

檢查掛載點是否屬於目標遠端目錄。本範例初始僅允許本機掛載點擁有者 root 使用者訪問,因此請使用 sudo 進行檢查。完成掛載後,在啟動 systemd 管理的設定之前,請先解除安裝目錄。如果目錄正忙,請關閉使用該目錄的 shell 和應用程式。

SSHFS 使用遠端帳戶的權限。客戶端的 root 使用者身分並未授予伺服器額外的權限。在將設定永久生效之前,請先修復身份驗證、SFTP 或遠端路徑錯誤。

終端機顯示一個 SSHFS 命令範例,其中包含遠端路徑、掛載點、批次模式和身分文件。
終端機顯示了一個手動安裝範例;請使用文字中的完整命令和驗證選項。

5. 新增持久性 fstab 條目

sudo cp -a /etc/fstab /etc/fstab.sshfs-backup
sudoedit /etc/fstab

如果備份檔案已存在,請選擇其他備份檔案名稱。將以下內容作為一行新增到文件中,並替換範例中的伺服器和路徑:

files@storage.example.net:/srv/data /mnt/remote sshfs _netdev,nofail,x-systemd.automount,x-systemd.mount-timeout=30s,IdentityFile=/root/.ssh/sshfs_boot,IdentitiesOnly=yes,BatchMode=yes,StrictHostKeyChecking=yes,UserKnownHostsFile=/root/.ssh/known_hosts,ConnectTimeout=10,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0

Debian 的SSHFS 手冊sshfs將fstab 檔案系統類型指定為 SSHFS,並接受fuse.sshfsSSHFS 以確保相容性。最後幾個欄位會停用此條目的轉儲和檔案系統檢查調度。如果路徑包含空格,請參閱fstab 格式參考。

選項目的
_netdev將掛載點分類為網路相關。
nofail讓我們在不需要此掛載點的情況下繼續啟動。
x-systemd.automount建立訪問觸發式自動掛載。
x-systemd.mount-timeout=30s限制初始掛載命令的等待時間。
ConnectTimeout=10限制SSH連線建立。
reconnect以及伺服器存活設置幫助偵測斷開的連線並重新連線。

systemd 特有的選項記錄在Debian systemd 掛載手冊中。掛載逾時並非對後續的每個檔案操作都設定了截止時間。

終端機顯示用於備份和編輯 /etc/fstab 的命令。
在新增持久性 SSHFS 條目之前,請備份 fstab 檔案。

6. 重新載入 systemd 並啟用自動掛載

sudo findmnt --verify --verbose
sudo systemctl daemon-reload
sudo systemctl start mnt-remote.automount
systemctl status mnt-remote.automount
sudo ls /mnt/remote
findmnt -t fuse.sshfs

請先查看驗證資訊再繼續。 findmnt手冊中描述了 fstab 驗證;此驗證檢查的是配置,而不是遠端憑證是否有效。存取目錄會執行單獨的連線測試。

上述單元名稱與上述路徑相對應/mnt/remote。對於其他路徑,請使用下列命令取得掛載點名稱systemd-escape --path --suffix=mount /your/path。從 fstab 產生的單元不需要單獨的systemctl enable命令。

如果希望在啟動時嘗試連接,請x-systemd.automount從條目中移除。釋放目錄使用者後,停止其自動掛載和掛載單元,重新載入 systemd,然後啟動符合的掛載單元。nofail如果儲存應保持可選狀態,請保留此項目。

終端機顯示 daemon-reload 並啟動 mnt-remote 自動掛載單元。
重新載入 systemd 並啟動產生的自動掛載單元。

7. 重啟後驗證行為

請在適當的維護時間重新啟動。使用按需配置時,請先檢查自動掛載,然後再存取目錄:

systemctl status mnt-remote.automount
sudo ls /mnt/remote
systemctl status mnt-remote.mount
findmnt -t fuse.sshfs

預期跡象包括啟動後自動掛載以及訪問後實際的 SSHFS 掛載。autofs僅憑一個條目並不能證明遠端文件已連線。需要驗證已知的遠端檔案或目錄,而不僅僅是本機掛載點資料夾是否存在。

如果應用程式必須在啟動前擁有此儲存空間,請在其服務中新增一個包含以下內容的 dropin:

[Unit]
RequiresMountsFor=/mnt/remote

此相依性(已在systemd.unit 檔案中記錄)會拉取並安排必要的掛載點。請重新載入 systemd 並單獨測試該應用程式的啟動。此外,該應用程式還需要相應的本地存取權限。

終端機顯示目錄存取、findmnt 和 mount-unit 狀態命令。
存取該目錄,然後檢查實際的 SSHFS 掛載點及其單元狀態。

8. 依故障類型進行故障排除

sudo journalctl -b -u mnt-remote.mount
sudo journalctl -b -u mnt-remote.automount
症狀下一個
公鑰認證失敗重複執行根上下文 SFTP 測試;檢查所選密鑰和遠端授權。
主機金鑰驗證失敗驗證伺服器指紋和 root 使用者的 known_hosts 條目。在更新密鑰之前,請先調查密鑰是否已更改。
名稱解析或連線失敗檢查 DNS、路由、連接埠存取、VPN 啟動和跳轉主機可用性。
sudo 可以讀取文件,但本機用戶不能。審查FUSE存取策略和所有權映射。
芒特很忙關閉工作目錄或開啟的檔案位於掛載點下的進程。

network-online.target這是一個啟動同步點,並不能保證特定伺服器或 VPN 可存取。 systemd network-online 的說明中描述了這個限制。

對於本機使用者有意存取的情況,請考慮新增 ` allow_other,default_permissions,uid=1000,gid=1000--user-id` 選項,並替換為實際的本機 ID。這將允許掛載點所有者以外的用戶訪問,同時核心權限檢查仍然有效。 UID/GID 選項更改的是掛載點所顯示的權限,而不是伺服器端的權限。 root 掛載點不需要user_allow_other在 fuse.conf 中設定 `--user-id` 選項;此政策允許非 root 掛載點請求更廣泛的存取權限。請參閱FUSE 權限手冊。更改這些選項後,請以預期應用程式使用者的身分重新測試。

修復根本問題後,清除失敗的掛載狀態並重試存取:

sudo systemctl reset-failed mnt-remote.mount
sudo ls /mnt/remote

並非所有應用程式都能透過重新連線實現透明恢復:先前開啟的檔案可能會失效,需要重新開啟。中斷的寫入操作可能會導致資料遺失。如果您的工作負載需要更強的故障保障,請選擇其他儲存方案。

終端機顯示 SSHFS 掛載單元的 journalctl 和 reset-failed 指令。
請先閱讀掛載日誌;修正故障原因後清除故障狀態。

操作清單和回滾

  • 無人值守 SFTP 使用精確的啟動標識。
  • 主機金鑰已驗證並儲存在預期文件中。
  • fstab 條目已解析,但不包含任何密碼或私鑰內容。
  • 重啟後存取可以產生預期的遠端清單。
  • 實際的本機使用者或服務可以讀取所需的檔案。
  • 您了解應用程式如何處理儲存空間不足的情況。

若要停用此配置,請停止使用該目錄的應用程序,停止mnt-remote.automount並mnt-remote.mount移除 fstab 檔案中的此條目,然後執行命令sudo systemctl daemon-reload。保留 fstab 檔案中的其他條目。移除掛載設定不會刪除遠端檔案或撤銷遠端授權金鑰。

留下評論

使用 Systemd 定時器可靠地執行 ownCloud 後台作業

將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。

透過尋找故障路由來恢復 ownCloud WebDAV 同步

透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。

設定 Nextcloud 的公共 URL,以便它可以存取自身。

透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。

使用 Systemd 定時器自動執行 Nextcloud Cron

檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。

使用 Redis 清除 Nextcloud 的檔案鎖定警告

啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。

如何才能獲得 Nextcloud A+ 安全評級

如何才能獲得 Nextcloud A+ 安全評級

使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。

啟用 Nextcloud 伺服器端加密,並評估其影響

為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。

將 Elasticsearch 全文搜尋功能新增至 Nextcloud

將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。

為 Nextcloud 已刪除檔案設定可靠的過期策略

為 Nextcloud 已刪除檔案設定可靠的過期策略

配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。