Mac 使用 SSH 连接 Windows(VS Code Remote)踩坑记录
·
环境
- 客户端:macOS
- 服务端:Windows 11(OpenSSH Server)
- 编辑器:VS Code + Remote - SSH
- 网络:
- 公网 IP或 ZeroTier 虚拟局域网 IP
1. Windows 开启 SSH 服务
安装 OpenSSH Server:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
启动并设置开机自启:
Start-Service sshd
Set-Service sshd -StartupType Automatic
检查服务状态:
Get-Service sshd
2. 配置 SSH 密钥登录
推荐在 Mac 生成密钥:
ssh-keygen -t ed25519
将生成的公钥追加到 Windows:
C:\Users\<User>\.ssh\authorized_keys
测试:
ssh users@<host>
3. VS Code SSH 配置
建议使用 Host 别名,不直接使用 IP:
Host win-public
HostName <公网IP>
User <user>
Host win-zt
HostName <ZeroTier IP>
User <user>
连接时始终选择:
win-public
或
win-zt
踩坑记录
问题一:Terminal 可以 SSH,VS Code 无法连接
现象
Terminal:
ssh win-zt
正常登录。
VS Code:
Remote-SSH 连接失败
原因
VS Code Remote-SSH 会维护自己的连接缓存,与 Terminal 并不完全一致。
解决
windows 中删除对应 Host 的 known_hosts:
ssh-keygen -R <ZeroTier IP>
建议使用 Host 别名,而不是直接连接 IP。
问题二:公网 IP 可以连接,ZeroTier IP 不行
现象
同一台 Windows:
| 地址 | Terminal | VS Code |
|---|---|---|
| 公网 IP | ✅ | ✅ |
| ZeroTier IP | ✅ | ❌ |
原因
VS Code 会把不同 HostName 当成两个独立的 Remote Host。
即使它们实际对应同一台机器:
- Server 缓存不同
- 平台缓存不同
- 扩展安装状态不同
问题三:报错 /bin/bash ... code-server.cmd: command not found
典型报错:
/bin/bash: line 1:
C:\Users\<user>.vscode-server\...\code-server.cmd:
command not found
原因
VS Code 将 Windows 主机误识别成 Linux。
于是:
Linux:
/bin/bash
尝试执行:
code-server.cmd
自然失败。
解决
在 settings.json 中指定远程平台:
{
"remote.SSH.remotePlatform": {
"win-public": "windows",
"win-zt": "windows"
}
}
注意:codex 中的 ssh 同样会遇到这个问题。
问题四:VS Code Server 缓存异常
删除远程缓存:
Remove-Item -Recurse -Force "$env:USERPROFILE\.vscode-server"
重新连接即可。
更多推荐

所有评论(0)