背景

远程开发模式下,代码跑在服务器上,但本地 IDE 更趁手。

问题来了:怎么让本地编辑器直接访问服务器上的文件?

方案不少:FTP 同步、网盘同步、rsync……但总觉得不够优雅。要么配置繁琐,要么实时性差,要么得装一堆东西。

方案:Samba + SSH 隧道

核心思路:

  1. 服务器上跑 Samba — 提供文件共享服务
  2. SSH 隧道转发 — 把 Samba 端口安全地映射到本地
  3. 本地挂载 — 像操作本地文件夹一样操作远程文件

这样做的优点:

  • ✅ 无需额外客户端软件
  • ✅ 实时同步,所见即所得
  • ✅ SSH 加密,安全可靠
  • ✅ 本地 IDE 原生支持

服务端配置 Samba

安装 Samba

sudo apt update
sudo apt install samba

创建共享目录

# 创建共享目录(或使用现有项目目录)
mkdir -p ~/projects

# 备份原始配置
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

编辑配置文件

编辑 /etc/samba/smb.conf,在末尾添加:

[projects]
   path = /home/youruser/projects
   browseable = yes
   read only = no
   create mask = 0644
   directory mask = 0755
   valid users = youruser

记得把 youruser 和路径换成你自己的。

设置 Samba 密码并启动服务

# 为当前用户设置 Samba 密码(可以和系统密码不同)
sudo smbpasswd -a youruser

# 启动服务
sudo systemctl start smbd
sudo systemctl enable smbd

SSH 隧道转发

Samba 默认监听 445139 端口。为了让本地能安全访问,用 SSH 隧道转发:

# 本地执行,建立隧道
ssh -L 4445:localhost:445 youruser@your-server-ip

参数说明:

  • -L 4445:localhost:445:把服务器本地的 445 端口映射到本地 4445
  • 保持这个终端窗口打开,隧道才生效

也可以配合 ~/.ssh/config 做持久化配置,或者用 autossh 保持连接稳定。


本地挂载

macOS

打开 Finder → 前往 → 连接服务器(或按 Cmd + K),输入:

smb://localhost:4445

输入 Samba 用户名和密码后,就能看到共享目录了。

Windows

  1. 打开「此电脑」
  2. 点击「映射网络驱动器」
  3. 文件夹填入:\\localhost:4445\projects
  4. 勾选「使用其他凭据连接」,输入 Samba 账号密码

Linux

# 安装 cifs-utils
sudo apt install cifs-utils

# 创建挂载点
mkdir -p ~/mnt/projects

# 挂载
sudo mount -t cifs //localhost/projects ~/mnt/projects -o port=4445,user=youruser

使用体验

挂载完成后,在你的 IDE(VS Code、JetBrains 等)中打开这个目录,就像操作本地文件一样。

保存即同步,无需手动上传下载。网络断开重连后,隧道恢复即可继续使用。


小结

方案 优点 缺点
FTP/SFTP 同步 简单 需要手动同步,实时性差
网盘同步 自动 占用空间,冲突处理麻烦
Samba + SSH 隧道 实时、透明、安全 需要保持 SSH 连接

对于远程开发场景,Samba + SSH 隧道是一个轻量且优雅的解决方案。配置一次,长期受益。


记录于 2025 年 1 月 9 日,远程开发实践中。