将文件夹挂载到远程Linux主机上

使用 SSHFS 将远程文件夹挂载到 Jetson TX2#

通过这种方式,你可以在 PC 上用 VS Code 流畅写代码,而 TX2 实时运行这些代码,无需手动传输文件。

1. 在 TX2 上安装 SSHFS

在 TX2 的终端执行:

sudo apt update
sudo apt install sshfs

2. 执行挂载操作

假设:

  • 远程电脑 IP:192.168.1.50

  • 远程用户名:workstation

  • 远程目录:/home/workstation/projects

  • TX2 本地目录:/home/nvidia/remote_code

步骤:

  1. 创建本地挂载点

    mkdir -p ~/remote_code
  2. 执行挂载

    sshfs workstation@192.168.1.50:/home/workstation/projects ~/remote_code

    此时输入远程电脑的密码,你的远程文件夹就出现在 ~/remote_code 下了。

3. 进阶:在 Docker 中访问远程文件夹

这是你目前最需要的场景。你需要让 Docker 容器能够识别这个由 SSHFS 挂载的特殊目录。

启动命令增加权限参数:

由于 SSHFS 基于 FUSE,Docker 需要一些额外的权限才能访问:

docker run --runtime nvidia -it --rm \
    --device /dev/fuse \
    --cap-add SYS_ADMIN \
    -v /home/nvidia/remote_code:/app \
    my-tx2-ubuntu20

关键参数说明:

  • --device /dev/fuse:允许容器访问 FUSE 设备。

  • --cap-add SYS_ADMIN:赋予容器系统管理权限,这是访问 FUSE 挂载点所必需的。

  • -v ...:/app:将已经挂载了远程文件的本地目录映射进容器。

4. 常见问题处理

如何卸载?

如果你想断开连接,不要直接删文件夹,使用:

fusermount -u ~/remote_code

性能提醒

  • 延迟:由于文件是通过网络实时读取的,如果网络不稳定(尤其是 Wi-Fi),编译大型项目可能会稍慢。

  • 断连:如果远程电脑关机或断网,TX2 上的挂载点会“卡死”。建议使用网线连接以保持稳定。

免密登录(强烈推荐)

为了避免每次挂载都输密码,建议把 TX2 的公钥发给远程电脑:

ssh-copy-id workstation@192.168.1.50