You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NFS+SSH隧道实现VPS挂载本地外部硬盘失败求助

NFS+SSH隧道实现VPS挂载本地外部硬盘失败求助

各位大佬好!我最近在折腾让VPS挂载本地电脑的外部硬盘,参考了一篇对比NFS/SMB/SSHFS的指南后,最终选择了NFS+SSH隧道的方案,但卡在挂载环节一直失败,折腾了好久都没找到问题所在,把我的操作步骤、报错信息和排查内容都贴出来,求帮忙分析下!


本地电脑操作步骤

  1. 安装NFS相关依赖:
apt-get install nfs-kernel-server nfs-common portmap
  1. 编辑NFS导出配置文件:
nano /etc/exports

添加以下导出规则(指定VPS的IP访问权限):

/mnt/mn1 102.254.243.168(insecure,rw,sync,no_subtree_check,no_root_squash)
  1. 重启NFS服务使配置生效:
systemctl restart nfs-kernel-server.service
  1. 配置防火墙规则,允许VPS访问SSH和NFS相关端口:
iptables -A INPUT -i enp4s0f0 -p tcp --dport 22 -s 102.254.275.167 -j ACCEPT
iptables -A INPUT -i enp4s0f0 -p tcp --dport 3049 -s 102.254.275.167 -j ACCEPT
ufw allow from 102.254.275.167 to any port nfs

VPS操作步骤

  1. 安装NFS客户端依赖:
apt-get install nfs-common portmap
  1. 创建本地挂载目录:
mkdir /mnt/mn1
  1. 建立SSH隧道,将VPS的3049端口转发到本地电脑的NFS默认端口2049:
ssh -fNv -L 3049:localhost:2049 root@164.238.71.109 -i nas

这条隧道命令执行后,用lsof -i :3049能看到SSH进程正在监听3049端口,看起来隧道是正常建立的


挂载失败的报错信息

尝试NFS通用挂载命令

mount -v -t nfs -o proto=tcp,port=3049 164.238.71.109:/mnt/mn1 /mnt/mn1

报错内容:

mount.nfs: timeout set for Sat Oct 28 18:19:00 2023
mount.nfs: trying text-based options 'proto=tcp,port=3049,vers=4.2,addr=164.238.71.109,clientaddr=102.254.275.167'
mount.nfs: mount(2): Connection timed out
mount.nfs: Connection timed out

尝试NFSv4挂载命令

mount -v -t nfs4 -o verproto=tcp,port=3049 164.238.71.109:/mnt/mn1 /mnt/mn1

报错内容(核心错误重复出现):

mount.nfs4: timeout set for Sat Oct 28 18:06:15 2023
mount.nfs4: trying text-based options 'verproto=tcp,port=3049,vers=4.2,addr=164.238.71.109,clientaddr=102.254.275.167'
mount.nfs4: mount(2): Invalid argument
mount.nfs4: trying text-based options 'verproto=tcp,port=3049,vers=4.1,addr=164.238.71.109,clientaddr=102.254.275.167'
mount.nfs4: mount(2): Invalid argument
mount.nfs4: trying text-based options 'verproto=tcp,port=3049,addr=164.238.71.109'
mount.nfs4: prog 100003, trying vers=3, prot=6
mount.nfs4: portmap query retrying: RPC: Program not registered
mount.nfs4: prog 100003, trying vers=3, prot=17
mount.nfs4: portmap query failed: RPC: Unable to receive - Connection refused

额外排查信息

本地电脑侧

  • 检查NFS端口状态:
rpcinfo -p | grep nfs

输出:

100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
  • 扫描VPS端口(本地执行):
nmap -Pn 102.254.275.167

输出:

Starting Nmap 7.80 at 2023-10-28 16:58 WEST
Nmap scan report for hostname.com (102.254.275.167)
Host is up (0.16s latency).
Not shown: 969 filtered ports, 30 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
  • 完整RPC服务列表:
rpcinfo -p

输出:

program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  60788  status
100024    1   tcp  34639  status
100005    1   udp  42895  mountd
100005    1   tcp  46313  mountd
100005    2   udp  55483  mountd
100005    2   tcp  38869  mountd
100005    3   udp  47377  mountd
100005    3   tcp  44549  mountd
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    3   tcp   2049
100021    1   udp  60048  nlockmgr
100021    3   udp  60048  nlockmgr
100021    4   udp  60048  nlockmgr
100021    1   tcp  45775  nlockmgr
100021    3   tcp  45775  nlockmgr
100021    4   tcp  45775  nlockmgr
  • NFS服务状态:
systemctl status nfs-server.service

输出:

● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Sat 2023-10-28 16:54:42 WEST; 31min ago
Process: 6470 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 6471 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
Main PID: 6471 (code=exited, status=0/SUCCESS)
CPU: 5ms

oct 28 16:54:42 benz systemd[1]: Starting NFS server and services...
oct 28 16:54:42 benz systemd[1]: Finished NFS server and services.

VPS侧

  • 检查SSH隧道监听状态:
lsof -i :3049

输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     1578 root    4u  IPv4  37815      0t0  TCP localhost.localdomain:3049 (LISTEN)
ssh     1578 root    5u  IPv6  37816      0t0  TCP localhost:3049 (LISTEN)
  • VPS的RPC服务列表:
rpcinfo -p

输出:

program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  47567  status
100024    1   tcp  33615  status

现在实在搞不清楚哪里出问题了,是隧道转发的配置有问题?还是NFS导出规则或者防火墙限制了?有没有大佬能帮忙指点下!

备注:内容来源于stack exchange,提问作者Ben Muircroft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:04:31