环境

  • 客户端: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"

重新连接即可。


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐