2012年9月28日

Mac OS X 使用 sshfs 掛載 Linux 遠端伺服器磁碟

SSHFS Project Page
SSHFS 可以將遠端伺服器的磁碟路徑掛載(mount)到本地資料夾,SSHFS 是以 FUSE(Filesystem in Userspace)為基礎,支援 SSH/SFTP 協定的檔案伺服器。只要遠端伺服器具備 SSH 伺服器即可建立連線,其需求如下:
  1. SSH伺服器(例如 OpenSSH Server)
  2. 已啟用 SFTP 檔案傳輸協定
    /etc/ssh/sshd_config 有以下設定:
    Subsystem sftp /usr/lib/openssh/sftp-server

假設一台 Linux 遠端伺服器,例如 192.168.0.100 已經安裝好 OpenSSH Server,一般使用 SSH 工具連線的指令是:

ssh user@192.168.0.100

如果有 FileZilla 或是 lftp 之類支援 SFTP 協定的傳輸工具,即使 Linux Server 不安裝傳統 FTP 伺服器,也能透過 SFTP 直接進行檔案傳輸。由於 SFTP 是採用 SSH 提供的加密為基礎,因此安全性比起一般 FTP 伺服器更好(但傳輸效能也會因加密而下降)。以 lftp 工具來說,測試遠端 SSH 伺服器是否可建立檔案傳輸連線,可用以下指令:

lftp sftp://user@192.168.0.100

如果 SFTP 連線沒問題,就可以開始使用 SSHFS 掛載遠端磁碟。在一般的 Linux 環境下,例如 Ubuntu Linux,可以直接使用「sudo apt-get install sshfs」安裝;但是在 Mac OS X 環境下,需要先加裝 MacPorts(MacPorts 安裝說明請參考此篇)。

在已安裝 MacPorts 的 Mac OS X 終端機,執行 sshfs 安裝指令:

sudo port install sshfs

安裝完成後,就可以使用 sshfs 指令建立掛載。首先先建立一個本地端的磁碟(空資料夾)。

mkdir ~/share

再使用 sshfs 掛載,指令範例如下:

sshfs user@192.168.0.100:/home/share

連線建立時會要求輸入密碼(SSH登入的使用者密碼),完成後就可以看到本地路徑 ~/share 下已經直接掛載遠端資料夾。

解除掛載則使用一般 umount 指令:

umount ~/share

對於需要經常修改遠端 Linux 伺服器的檔案,例如網站資料,或是想要直接用 Mac OS X 開啟伺服器上面的檔案,這是一種相當簡便的作法。

不過由於所有檔案存取動作都是透過網路,因此速度也會受限於頻寬。通常在 LAN 會有不錯的效果,特別是搭配 1000Mbps 有線區網或 300Mbps 802.11n WiFi 無線區網,存取速度就會有相當不錯的表現(可直接播放影片檔)。由於 SSH 加密會降低傳輸效能,實測對 1000Mbps 的網路來說,並無法達到像 FTP / iSCSI 一樣的水準;但是 SSH 屬於一般 Linux Server 都會設置的基本服務,使用上還是較為方便。

1 則留言:

  1. 真的是不錯的工具,使用 sshfs ,可以加上 sublime text2 加強開發功力。

    不過因為一開始可能因為 OSX 版本問題,導致錯誤顯示,這邊是解決方法

    http://www.unityisplural.com/2011/11/getting-fuse4x-installed-on-osx-lion.html

    回覆刪除

lyhcode by lyhcode
歡迎轉載,請務必註明出處!