修復 SFTP 掛載中無效的符號連結 — NetDrive

閱讀時間 5 分鐘 troubleshooting sftp
Morgan
MorganStaff Engineer
排查 SFTP 掛載的 NetDrive 中符號連結無法解析的問題:版本需求、目標失效的連結,以及權限造成的原因。

SFTP 伺服器上的部署目錄通常會保留一個 current 符號連結,指向目前上線的發行目錄 — current → releases/20260821-1。這是零停機部署的標準做法,但也正是第一次用 NetDrive 掛載該伺服器時最容易悄悄出問題的地方。這個連結可能顯示為空檔案、失效的捷徑,或是根本不出現,而原本預期 S:\current\config.yaml 能正常運作的腳本,突然就失靈了。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

掛載 SFTP 伺服器,符號連結正常運作

NetDrive 讓 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 與 macOS 上顯示為原生磁碟機 — 不需同步,也不需完整下載。

  • 3.17.817 及之後版本,SFTP 掛載上的符號連結可正確解析
  • 支援密碼或 SSH 金鑰驗證
  • 支援 Windows、macOS,以及實驗性的 Linux 版本
WindowsmacOS
下載 NetDrive →

免費試用。提供終身與訂閱方案。

先確認版本

NetDrive 從 3.17.817(2023-01-07)版開始支援 SFTP 連線的符號連結。在此之前的任何版本上,伺服器端的符號連結在掛載端都沒有對應項目 — 它可能不會出現,或是顯示為零位元組的檔案,而不是指向其目標。這是「符號連結不能用」問題中最常見的原因,在動手處理伺服器端之前,值得先排除這個可能性。

要檢查已安裝的版本,請開啟 NetDrive 的 Drive Manager,點擊 NetDrive 圖示(Windows 為系統匣、macOS 為選單列),然後開啟 About NetDrive。如果版本號比 3.17.817 還舊,請先更新再繼續 — 目前的正式版本為 3.19.7,可從 netdrive.net/download 取得。

NetDrive drive manager showing an SFTP connection alongside other mounted drives

已經是 3.17.817 或更新版本?檢查連結本身

如果版本不是問題所在,通常問題就出在符號連結本身的設定。請透過一般的 SSH 連線,從伺服器端逐項排查:

  • 絕對路徑與相對路徑的目標。 相對符號連結(current → releases/20260821-1)是相對於自身所在目錄解析的,通常能順利透過掛載存取。絕對符號連結(current → /var/www/app/releases/20260821-1)只有在該絕對路徑也確實存在、且能從 SFTP 帳號自身的檔案系統視角存取時,才能正確解析 — 如果該帳號被限制在某個子目錄的 chroot 環境中,這一點並不保證成立。

    # Run this on the server to see how the link is defined
    ls -la /var/www/app/current
  • 目標位於 SFTP 帳號根目錄之外。 有些伺服器會將 SFTP 使用者限制在以其家目錄或特定路徑為根的 chroot 環境中。指向該根目錄之外的符號連結,對 SFTP 連線來說是不可見的 — 因此對 NetDrive 來說也是如此 — 無論你使用的是哪個 NetDrive 版本。請確認目標路徑落在 SFTP 帳號所限定的同一個根目錄內。

  • 目標已失效。 如果符號連結所指向的發行目錄已被刪除或重新命名(例如部署到一半,或清理腳本執行得太早),連結本身沒有問題,但沒有東西可以解析。伺服器上執行 ls -la 時,該連結會以不同顏色顯示,或依你的 shell 設定被標記為失效。

  • 目標的權限,而不只是連結本身的權限。 符號連結檔案本身可能是可讀的,但其目標目錄的權限卻擋住了 SFTP 帳號。兩者都要檢查。

Confirming that a connected SFTP drive mounted successfully after setup

透過掛載確認修復結果

在排除版本問題、並確認連結是相對路徑、位於根目錄內、且指向確實存在的目標之後,請在 NetDrive 中重新連線該磁碟機(在 Drive Manager 中右鍵點擊該連線並選擇 Reconnect,或先中斷再重新連線),然後直接檢查掛載路徑:

# Windows PowerShell — replace S: with your assigned drive letter
dir S:\current
# macOS / Linux Terminal
ls -la /Volumes/sftp-mount/current

如果目標資料夾的內容現在能正確列出,就表示符號連結已能正確解析。如果在確認版本與連結本身的有效性之後,它仍然顯示為空或不存在,那麼剩下的可能原因通常是伺服器端的 SFTP 子系統設定 — 具體來說,是伺服器的 sftp-server 處理程序是否停用了符號連結的追蹤功能,這屬於伺服器管理員需要處理的問題,而不是 NetDrive 的設定選項。

結語

SFTP 掛載上的符號連結處理,取決於兩件彼此獨立的事:你的 NetDrive 版本是否支援它(3.17.817 以上),以及這個連結從 SFTP 帳號的角度來看是否有效。先確認版本 — 這是比較快的修正方式 — 接著再檢查連結的目標,最後才假設是 NetDrive 本身的問題。若想瞭解更廣泛的 SFTP 連線問題,請參閱 Fix SFTP Authentication Failures in NetDrive;若需要初始設定說明,請參閱 Mount an SFTP Server on Windows

— Morgan, NetDrive