vscode连接局域网内mac主机的核心是开启macos自带ssh服务(即“远程登录”),其他共享选项无关;需勾选“远程登录”,确认用户权限,验证ip与网络连通性,检查私钥权限及vscode-server部署依赖(如curl、磁盘空间、全盘访问权限)。

VSCode 连局域网内的 Mac 主机,核心不是“共享权限”,而是必须开启 macOS 自带的 SSH 服务(即“远程登录”),其他如文件共享、屏幕共享、远程管理等选项全都不相关,开了也没用。
macOS 必须开启“远程登录”(SSH 服务)
这是唯一必需项。VSCode 的 Remote-SSH 插件底层走的就是标准 OpenSSH 协议,不依赖任何 Apple 自研协议或额外服务。
- 打开“系统偏好设置” → “共享” → 勾选“远程登录”
- 下方会显示类似
ssh username@192.168.x.x的提示,其中username是你当前 macOS 用户名,192.168.x.x是该机在局域网中的 IP - 确认勾选的是“所有用户”或至少包含你的用户名;如果只勾选了“仅这些用户”,而你用的不是列表里的账号,连接会直接被拒绝
- 不要关掉窗口——此时
sshd已启动,但若误点“×”退出共享设置,部分 macOS 版本会顺手关掉服务(尤其是 Ventura 及更新系统)
IP 地址和网络连通性必须手动验证
VMware 或 Parallels 虚拟出来的 macOS,其 IP 不一定和宿主机同网段;物理 Mac mini 或 MacBook 若连的是公司 Wi-Fi,也可能被隔离在不同 VLAN。不能只看“能 ping 通”就认为 OK。
- 在 macOS 终端执行
ipconfig getifaddr en0(有线)或ipconfig getifaddr en1(无线),比看“网络”偏好设置更可靠 - 从 Windows 或另一台 Linux 机器上执行
ssh -v username@mac-ip,观察是否卡在debug1: Connecting to mac-ip [mac-ip] port 22—— 卡住说明网络不通或防火墙拦截 - VMware 中若用 NAT 模式,需确认虚拟网络编辑器里“NAT 设置”中 22 端口未被映射冲突;桥接模式更省心,但需确保物理路由器没启用客户端隔离
VSCode 连接时常见的私钥权限陷阱
即使 ssh username@mac-ip 在终端能成功登录,VSCode 仍可能报 Permission denied (publickey) —— 它对私钥文件权限比终端更严格。
- 运行
chmod 600 ~/.ssh/id_rsa(或你实际用的私钥路径),VSCode 会拒绝读取权限为 644 或 755 的密钥 - 如果用了非默认密钥(比如
id_rsa_mac),必须在~/.ssh/config中显式写IdentityFile ~/.ssh/id_rsa_mac,VSCode 不会自动 fallback 到ssh-add -l列出的 key - macOS 上生成的密钥默认是新格式(
-----BEGIN OPENSSH PRIVATE KEY-----),没问题;但若从 PuTTY 导入过 .ppk,必须用 PuTTYgen 转成 OpenSSH 格式再用
首次连接后卡在 “Installing VS Code Server” 怎么办
Mac 主机上没装 curl 或磁盘空间不足时,VSCode 无法自动下载并部署远端服务组件,界面就停在那里,毫无提示。
- 先手动 SSH 登上去,执行
which curl unzip tar,缺哪个就补:例如brew install curl unzip - 检查
~/.vscode-server目录权限:ls -ld ~/.vscode-server应为drwx------;如果是drwxr-xr-x,VSCode 会跳过写入 - 若 Mac 启用了 Full Disk Access 权限管控(常见于 Sonoma / Sequoia),VSCode 可能无权在用户目录下创建子目录,需到“系统设置 → 隐私与安全性 → 全盘访问”中手动添加 VSCode.app
最常被忽略的一点:VSCode 远程连接 macOS 后,所有终端、调试器、扩展都运行在 Mac 环境里,但 macOS 默认 shell 是 zsh,且其 ~/.zshrc 不一定被 GUI 应用加载。如果你依赖 PATH 里的 Python、Node 或 rustup,得确认它们在非登录 shell 下也能被找到——否则新建终端一打开就是 command not found。











