vs code remote-ssh 连不上 go 项目,需检查远程 $path 是否包含 go;goland gateway 401 因未配 gateway.token;远程调试卡在 connecting 是 delve 版本或监听地址问题;goproxy 失效因远程环境未正确配置代理。

VS Code Remote-SSH 连不上 Go 项目?检查 go 是否在远程 $PATH 里
VS Code Remote-SSH 启动后,Go 扩展报 Go command not found 或无法识别 go.mod,大概率不是插件问题,而是远程 shell 环境没加载你的 ~/.bashrc 或 ~/.zshrc 中的 go 路径。
实操建议:
立即学习“go语言免费学习笔记(深入)”;
- 手动 SSH 登录服务器,运行
which go,确认路径(如/usr/local/go/bin/go) - 在 VS Code 的 Remote-SSH 设置中,打开
settings.json,加这一行:"remote.SSH.remoteServerCommand": "zsh -i -c"
(用bash -i -c也行),强制启用交互式 shell 加载配置 - 别依赖
/etc/environment或系统级 PATH —— VS Code Remote 不读它 - 如果用非 root 用户装的 Go(比如用
asdf或gvm),确保source行已写进 shell 配置,并且该配置被-i模式真正执行
GoLand Gateway 连接失败:401 或 “no valid session” 是因为没配 gateway.token
GoLand Gateway 默认不启用认证,但一旦你启用了 auth.enabled=true 却没提供 token,客户端就会卡在登录页或直接 401。这不是网络问题,是服务端拒绝了未授权连接。
实操建议:
立即学习“go语言免费学习笔记(深入)”;
- 检查 Gateway 配置文件(通常是
~/.JetBrains/gateway/conf/gateway.properties),确认是否有auth.enabled=true - 如果启用了认证,必须生成并配置
gateway.token文件(纯文本,一行 token 字符串),路径默认为~/.JetBrains/gateway/conf/gateway.token - token 不需要 Base64 或加密,但不能含空格或换行;改完记得重启 Gateway 进程(
kill -SIGTERM $(pgrep -f 'jetbrains-gateway')) - GoLand 客户端连的时候,URL 格式必须是
https://host:port?token=xxx或直接填入 token 字段 —— 复制 gateway UI 上生成的完整链接最稳妥
远程调试 Go 程序卡在 “Connecting to headless Delve”?Delve 版本和启动方式不匹配
VS Code 或 GoLand 都可能在启动远程调试时卡住,日志里反复出现 Connecting to headless Delve,常见原因是本地 Delve 客户端版本和远程 dlv 二进制不兼容,或远程进程没以 debug 模式正确启动。
实操建议:
立即学习“go语言免费学习笔记(深入)”;
- 远程机器上运行
dlv version,确保是 v1.21.0+(老版本对 Go 1.21+ runtime 支持不稳定) - 不要用
dlv exec直接跑程序 —— 它不支持 attach 场景;改用dlv dap --headless --listen=:2345 --api-version=2 --accept-multiclient - VS Code 的
launch.json中,mode必须和 dlv 启动方式一致:用dap模式就配"mode": "exec"或"mode": "auto",别写"mode": "core" - 防火墙要放行调试端口(如
2345),且远程dlv必须监听0.0.0.0:2345,不是127.0.0.1:2345(后者本地 loopback 无法从 VS Code 主机访问)
Go module proxy 在远程环境失效?GOPROXY 没走对代理链
远程开发时 go build 报 module github.com/xxx@version: reading https://proxy.golang.org/xxx/@v/version.mod: 403 Forbidden,说明 GOPROXY 没生效,或者 proxy 地址被远程网络策略拦截。
实操建议:
立即学习“go语言免费学习笔记(深入)”;
- 远程终端执行
go env GOPROXY,确认输出是https://proxy.golang.org,direct或国内镜像(如https://goproxy.cn);不是空、不是off - 如果远程服务器在企业内网,可能 DNS 或出口代理屏蔽了
proxy.golang.org,此时必须显式设为可信镜像:go env -w GOPROXY=https://goproxy.cn,direct
- VS Code Remote 的终端和任务(Tasks)可能用不同 shell,导致
go env输出不一致 —— 建议统一在~/.zshrc里加export GOPROXY=https://goproxy.cn,direct - 别信
go env -w写进GOPATH的全局设置 —— 它只影响当前用户,且需重新登录 shell 才生效










