Deployment路径映射必须精确同步,常见错误是远程路径多斜杠导致静默失败;需确认远程目录存在可写、Root path为绝对路径、go.mod权限正确;自动上传需同时启用自动保存和显式保存触发;SFTP连接测试通过不等于同步可用,须验证安全组和SSH子系统;环境变量需显式配置,因GoLand非交互式shell不加载~/.bashrc。

Tools → Deployment → Configuration 里路径映射必须精确
同步失败最常见原因是 Deployment path 和 Local path 映射错位。比如本地是 /home/user/myproj,远程填成 /home/user/myproj/(多了一个斜杠),某些 SFTP 实现会当成不同路径处理,导致文件上传到错误位置甚至静默失败。
- 确认远程目录存在且权限可写:
ls -ld /your/remote/path,如果不是当前用户所有,用chown $USER:$USER /your/remote/path -
Root path填的是远程服务器上的绝对路径,不是相对路径或 ~ 符号 - 如果项目含
go.mod,检查其权限——go.mod和go.sum被root占有会导致同步后go run报 “cannot find module”
自动上传要配对两个开关
只开 Upload changed files automatically 不够,它依赖“保存动作”触发。GoLand 默认不自动保存文件,所以你改完代码没 Ctrl+S,就不会上传。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 先启用自动保存:Settings → Editor → General →
Save files on frame deactivation和Save files automatically if application is idle for …(建议设为 1 秒) - 再启用部署自动上传:Tools → Deployment → Options → 勾选
Upload changed files automatically,并选On explicit save action - 注意:删除本地文件默认不同步删除远程文件,如需该行为,额外勾选
Delete remote files when local are deleted
SFTP 连接测试通过 ≠ 同步一定能用
Test Connection 成功只说明 SSH 登录通了,不代表 SFTP 通道可用或路径可写。很多问题出在中间件限制上。
- 云服务器(如阿里云、AWS)必须在安全组里放行 SFTP 端口(通常是 22),不只是调试端口
- 某些企业内网 SSH 服务禁用了 SFTP 子系统,此时 GoLand 会卡在 “Uploading…” 无响应——用命令行验证:
sftp user@host,若报 “Connection closed” 或 “sftp server not found”,就得联系运维开启Subsystem sftp /usr/lib/openssh/sftp-server - SSH 配置用了
~/.ssh/config别名?GoLand 的 Deployment 不自动读取它,得在 SSH configuration 中手动填 host/port/user,不能只填别名
同步后远程 go run 报错,大概率是环境变量没透传
GoLand 用 SFTP 同步文件,但不会把你的本地 shell 环境变量(如 GOPATH、GOPROXY)带到远程执行环境中。远程 go run 很可能用的是系统默认值或 root 的配置。
- 在远程服务器上运行
env | grep -E 'GO|GOROOT|GOPATH',对比本地终端输出 - 不要依赖
~/.bashrc—— GoLand 启动的非交互式 shell 不加载它;把关键变量写进~/.profile或直接在 Run Configuration 的Environment variables字段里显式设置 - 如果远程
go version输出为空或版本不对,说明PATH没包含 Go 的 bin 目录,补上:export PATH=/usr/local/go/bin:$PATH

















