Jamyy's Weblog

透過 SSH Tunnel 掛載 NFS 檔案系統

by Jamyy on 四月.16, 2012, under Linux

NFS Server: CentOS 6
NFS Client: Linux with openssh-client & nfs-common (or nfs-utils) packages

NFS Server

# service rpcbind start

# service nfs start

# vi /etc/sysconfig/nfs

#使用固定 mountport
MOUNTD_PORT=892

# service nfs restart

# vi /etc/exports

# 透過 SSH Tunnel 連線本機 NFS 服務時:
# 1. 會以 ::1 連線本機 NFS 分享, 因此必須設定為 ::1 或 localhost (不可設定為 127.0.0.1)
# 2. 會以 ::1:1024 以上的隨機埠口連入本機 2049 port, 因此必須使用 insecure 參數
/shared/path ::1(rw,sync,no_root_squash,insecure)

# exportfs -r -v

NFS Client

$ sudo ssh -f -N -c arcfour -o ServerAliveInterval=60 \
   -L 2222:localhost:2049 myaccount@my.nfs.server

$ sudo ssh -f -N -c arcfour -o ServerAliveInterval=60 \
   -L 3333:localhost:892 myaccount@my.nfs.server

$ sudo mount -t nfs -o port=2222,mountport=3333,tcp \
   localhost:/shared/path /mnt

註:

  1. 使用 arcfour 加密方式可大幅提升傳輸效率
  2. 指定 ServerAliveInterval 參數可避免 SSH Tunnel 斷線; 此參數亦可設定在 NFS Client 的 ~/.ssh/config 檔案中
  3. 2049 port 是固定值, 892 port 則視 NFS Server 的 MOUNTD_PORT 設定值而異

參考資料:

:,