背景
远程开发模式下,代码跑在服务器上,但本地 IDE 更趁手。
问题来了:怎么让本地编辑器直接访问服务器上的文件?
方案不少:FTP 同步、网盘同步、rsync……但总觉得不够优雅。要么配置繁琐,要么实时性差,要么得装一堆东西。
方案:Samba + SSH 隧道
核心思路:
- 服务器上跑 Samba — 提供文件共享服务
- SSH 隧道转发 — 把 Samba 端口安全地映射到本地
- 本地挂载 — 像操作本地文件夹一样操作远程文件
这样做的优点:
- ✅ 无需额外客户端软件
- ✅ 实时同步,所见即所得
- ✅ 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 默认监听 445 和 139 端口。为了让本地能安全访问,用 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
- 打开「此电脑」
- 点击「映射网络驱动器」
- 文件夹填入:
\\localhost:4445\projects - 勾选「使用其他凭据连接」,输入 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 日,远程开发实践中。