用 VS Code Remote-SSH
在远程 Mac 上开发
VS Code 的 Remote-SSH 扩展让编辑器界面留在本地,而文件、终端、语言服务和调试都在远程 Mac 上运行。跨洋连接时,它对延迟的容忍度比远程桌面高得多。本文覆盖 SSH 配置与密钥、首次连接、扩展在哪一端运行、端口转发、常见故障,最后简要介绍 JetBrains Gateway。
先把 SSH 配好
Remote-SSH 直接使用本机的 OpenSSH 客户端和 ~/.ssh/config。先确保在终端里能用密钥免密登录:
# 本地生成密钥(已有可跳过)
ssh-keygen -t ed25519 -C "you@example.com"
# 把公钥追加到远程 Mac 的 ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@远程主机地址Windows 上如果没有 ssh-copy-id,手动把 .pub 文件内容追加到远端的 ~/.ssh/authorized_keys,并确认该文件权限为 600。
# ~/.ssh/config
Host rmac
HostName 远程主机地址或 Tailscale 机器名
User alice
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 30
ServerAliveCountMax 4ServerAliveInterval 让客户端定期发送心跳,减少长时间空闲后被中间网络设备断开的情况。配好后 ssh rmac 应能直接登录。
首次连接
在 VS Code 扩展市场安装 Microsoft 发布的「Remote - SSH」。按 F1 打开命令面板,选择「Remote-SSH: Connect to Host…」,列表里会出现 config 中的 rmac。首次连接时选择平台为 macOS,VS Code 会在远端的 ~/.vscode-server 下安装服务端组件,之后打开远端的项目文件夹即可。
服务端组件由远程 Mac 自己下载。机器在海外时,这一步通常很快;如果远端访问不了下载地址,可以在设置里打开 remote.SSH.localServerDownload 让本地下载后再传过去。
扩展在哪一端运行
连接后,扩展分成两类:主题、快捷键这类界面扩展留在本地;语言服务、Linter、调试器、Git 集成等工作区扩展需要装在远端。扩展面板里会分开显示「本地」和「SSH: rmac」两栏,后者的扩展需要单独点「在 SSH 中安装」。
可以在设置的 remote.SSH.defaultExtensions 里列出常用扩展,换一台远程机器时自动安装。语言工具链(Node.js、Python、Swift)也要在远端装好,参见 新 Mac 开发环境配置。
端口转发:在本地浏览器预览
在远端跑 npm run dev 这类开发服务器时,VS Code 通常会自动检测端口并转发,在「端口」面板里可以看到映射关系,本地浏览器打开 localhost:端口 即可。也可以手动添加,或者写进 SSH 配置,让普通 SSH 连接也带上转发:
Host rmac
LocalForward 3000 localhost:3000
LocalForward 5901 localhost:5900 # 顺便把屏幕共享映射到本地 5901开发服务器只监听 localhost 就够了,不需要绑定 0.0.0.0 暴露给外网。
常见问题排查
- 连接被拒绝:确认远程 Mac 的「系统设置 → 通用 → 共享 → 远程登录」已打开,且当前用户在允许列表里。
- 反复要求输入密码:检查远端
~/.ssh目录权限为 700、authorized_keys为 600,以及 config 里的IdentityFile路径。 - 卡在安装服务端:看「输出」面板里 Remote - SSH 的日志;远端
.zshrc里有交互式命令或报错时会干扰安装,把它们放进仅交互式会话执行的分支里。 - 找不到命令:VS Code 终端读取的是登录 shell 环境,Homebrew 的
shellenv要写在~/.zprofile中。
JetBrains Gateway 简介
JetBrains Gateway 的思路类似:本地运行轻量客户端,IDE 后端运行在远程主机上,同样通过 SSH 连接。不同 IDE 和远端操作系统的支持程度不一样,使用前请在 JetBrains 官方文档确认 macOS 作为远端主机的支持情况。如果暂不支持,也可以直接在远程 Mac 上安装 IDE,通过屏幕共享使用。
资料来源:VS Code Remote-SSH 文档 · JetBrains 远程开发文档
三万主机出租的 Mac 交付时已经开好 SSH,拿到地址和账户后即可按本文配置。
常见问题
Remote-SSH 一直卡在“正在设置 SSH 主机”怎么办?
先在终端里用 ssh 主机别名 确认能直接登录。能登录的话,通常是远端 shell 启动脚本里有交互式输出或报错,或者上次安装的 VS Code Server 损坏。执行命令面板里的「Remote-SSH: Kill VS Code Server on Host」后重连,必要时删除远端 ~/.vscode-server 目录。
远程开发时代码存在哪里?
代码、依赖和构建产物都在远程 Mac 上,本地只负责界面。断开后远端的文件不受影响,换一台电脑装好 VS Code 和密钥就能接着写。
网络不稳定时会丢失未保存的修改吗?
VS Code 会尝试自动重连,短暂断线一般不影响编辑。长时间运行的命令建议放在远端的 tmux 里,即使 VS Code 窗口断开,命令也会继续执行。
扫码加微信客服手机上长按二维码识别