在 Linux 裡如果要掛載遠端主機的磁碟或目錄,大多數可以使用 NFS 或 Samba。不過 SSHFS (SSH Filesystem) 提供了一個很簡單的方式,只要主機提供有 SSH 服務就可以使用了。我手邊正好各有一台 CentOS 6.4 與 Debian GNU/Linux 7,就拿來試試囉!
在 CentOS 6.4 安裝 SSHFS 套件
在 CentOS 6.4 的套件庫裡並沒有 SSHFS 的套件,爬文後參考了《CentOS 6.x / Debian / Ubuntu: NFS or SMB/CIFS alternative sshfs》這篇文章,得知在 EPEL (Extra Packages for Enterprise Linux) 的套件庫裡有這個套件。然後,又在《[完全用 GNU/Linux 工作] 05. 套件庫及鏡像站》這篇文章裡得知,「請先行安裝 RPMforge 再安裝 EPEL」。
於是,我又找了找 RPMforge 的套件庫,確定它也有 SSHFS 的套件,那麼就決定使用 RPMforge 裡的 SSHFS 套件了。
$ sudo yum -y install fuse fuse-sshfs Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: ftp.cs.pu.edu.tw * extras: mirrors.163.com * rpmforge: ftp.riken.jp * updates: mirrors.163.com Setting up Install Process Package fuse-2.8.3-4.el6.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package fuse-sshfs.x86_64 0:2.2-1.el6.rf will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: fuse-sshfs x86_64 2.2-1.el6.rf rpmforge 44 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 44 k Installed size: 103 k Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : fuse-sshfs-2.2-1.el6.rf.x86_64 1/1 Verifying : fuse-sshfs-2.2-1.el6.rf.x86_64 1/1 Installed: fuse-sshfs.x86_64 0:2.2-1.el6.rf Complete!
接著,將允許使用 SSHFS 的使用者加到 fuse 這個 group 裡,指令如下:
sudo gpasswd -a $USER fuse
然後,就可以使用 SSHFS 了。此時,要掛載遠端的目錄指令格式如下:
sshfs username@hostname:/directory /yetanotherlocaldirectory
例如,我要掛載遠端 (192.168.1.106) 使用者 online 家目錄裡的 share 目錄到本地端的 working 目錄時,指令如下:
sshfs online@192.168.1.106:/home/online/share ~/working
卸載的指令格式如下:
fusermount -u /directory
例如,我要卸載剛才掛載的那個目錄,指令如下:
fusermount -u working
最後,我在《好用的sshfs》這篇文章得知,SSHFS 是以遠端主機的權限來掛載,所以如果兩端的主機 uid/gid 不一致時,會出現權限錯誤的問題。解決辦法是在掛載時加上指定 uid/gid 的選項。因為我已經將 CentOS 6.4 與 Debian GNU/Linux 7 裡的使用者 uid/gid 改成一樣的,例如 online 這個帳號的 uid/gid 均為 1000,於是掛載指令變成如下:
sshfs -o "uid=1000,gid=1000" online@192.168.1.106:/home/online/share ~/working
在 Debian GNU/Linux 7 安裝 SSHFS 套件
Debian GNU/Linux 7 的套件庫已經收錄了 SSHFS 的套件,因此只要用 apt-get 指令安裝即可。
$ sudo apt-get -y install sshfs Reading package lists... Building dependency tree... Reading state information... The following NEW packages will be installed: sshfs 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/54.8 kB of archives. After this operation, 147 kB of additional disk space will be used. Selecting previously unselected package sshfs. (Reading database ... 119936 files and directories currently installed.) Unpacking sshfs (from .../archives/sshfs_2.4-1_amd64.deb) ... Processing triggers for man-db ... Setting up sshfs (2.4-1) ...
接著,如同 CentOS 6.4 一般,將使用者加入 fuse 這個 group,然後該使用者重新登入後就可以使用 SSHFS 了。
延伸閱讀:
沒有留言:
張貼留言