windows之外的世界比想像中要大得多呢,幾乎天天都在用ssh,卻到今天才知道有sshfs這個(gè)好東西,前幾天還在為ZendStudio可以遠(yuǎn)程編輯文件欣喜,慚愧啊,終于有比vi scp://hostname//path/to/file更方便的方式了。
sshfs,就是可以把ssh連接到的主機(jī)資源,映射到本機(jī)的文件系統(tǒng)當(dāng)中,然后用戶(hù)可以像操作本地文件一樣操作,而實(shí)際的文件改動(dòng)將通過(guò)ssh傳輸?shù)竭h(yuǎn)程主機(jī)當(dāng)中。類(lèi)似于mount了一個(gè)windows共享目錄,或者另外一臺(tái)linux主機(jī)的samba共享,或者是nfs共享,只是“共享協(xié)議”變成了ssh通道罷了。
ubuntu源中已經(jīng)包含了sshfs了,以及所需的fuse包,直接apt安裝就可以了,一共是三個(gè)包:“fuse-utils libfuse2 sshfs”,不大,加起來(lái)才179k。安裝的時(shí)候會(huì)自動(dòng)創(chuàng)建用戶(hù)組fuse,要使用sshfs的用戶(hù)需要先加到這個(gè)用戶(hù)組里才行(記得完成后還要重新登錄),不然會(huì)沒(méi)有權(quán)限執(zhí)行fusermount:
fuse: failed to exec fusermount: Permission denied
mkdir ~/remote_folder
在你的系統(tǒng)上創(chuàng)建了本地目錄之后,就可以通過(guò) SSHfs 掛載遠(yuǎn)程文件系統(tǒng)了。
掛載遠(yuǎn)程文件系統(tǒng)
要在你的機(jī)器上掛載遠(yuǎn)程文件系統(tǒng),你需要在終端窗口中輸入一段較長(zhǎng)的命令。
sshfs -o idmap=user username@ip.address:/remote/file/system/ ~/remote
注意: 也可以通過(guò) SSH 密鑰文件掛載 SSHfs 文件系統(tǒng)。只需要在上面的命中用 sshfs -o IdentityFile=~/.ssh/keyfile, 替換 sshfs -o idmap=user 部分。
輸入這個(gè)命令之后,會(huì)提示你輸入遠(yuǎn)程用戶(hù)的密碼。如果登錄成功了,你的遠(yuǎn)程文件系統(tǒng)就會(huì)被掛載到之前創(chuàng)建的 ~/remote_folder 目錄。
使用完了你的遠(yuǎn)程文件系統(tǒng),想要卸載它?容易嗎?只需要在終端輸入下面的命令:
sudo umount ~/remote_folder
這個(gè)簡(jiǎn)單的命令會(huì)斷開(kāi)遠(yuǎn)程連接同時(shí)清空 remote_folder 目錄。
總結(jié)
在 Linux 上有很多工具可以用于訪(fǎng)問(wèn)遠(yuǎn)程文件并掛載到本地。但是如之前所說(shuō),如果有的話(huà),也只有很少的工具能充分利用 SSH 的強(qiáng)大功能。我希望在這篇指南的幫助下,也能認(rèn)識(shí)到 SSHfs 是一個(gè)多么強(qiáng)大的工具。