欢迎光临
我们一直在努力

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:

地址TerminalVS 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)
未经允许不得转载:171主机测评 » Mac 使用 SSH 连接 Windows(VS Code Remote)踩坑记录
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址