Remote-SSH 连接信息不存于 settings.json,而保存在系统级 SSH 配置文件 ~/.ssh/config(Linux/macOS)或 %USERPROFILE%.sshconfig(Windows)中;该文件为 OpenSSH 标准格式,VSCode 仅读取不修改,导出时需清理 IdentityFile 绝对路径、ProxyJump 脚本路径及中文注释,确保跨机器可用。

Remote-SSH 的配置文件不在 settings.json 里
很多人以为导出 settings.json 就能带走远程连接信息,其实不是。VSCode 的 Remote-SSH 连接列表(比如你用 ssh user@host 配的主机)默认不存进 settings.json,而是写在系统级 SSH 配置文件中:~/.ssh/config(macOS/Linux)或 %USERPROFILE%.sshconfig(Windows)。这个文件是 OpenSSH 标准格式,VSCode 只读取它,不生成也不修改它——除非你手动编辑过。
怎么确认当前用了哪个 SSH 配置文件
VSCode 默认读取 ~/.ssh/config,但可以被覆盖。检查是否改过路径:
- 打开 VSCode 设置,搜索
remote.SSH.configFile,看值是不是空 —— 空表示用默认路径;如果填了别的路径(比如C:mysshconfig),那就得导出那个文件 - 终端执行
code --locate-user-data不管用,它只返回 VSCode 自身数据目录,和 SSH 配置无关 - Remote-SSH 扩展首次连接时会提示“找不到配置,是否创建”,选“是”就会在默认位置生成一个空
config文件
导出时必须处理的三类内容
直接复制 ~/.ssh/config 到新机器可能失败,因为里面混了本地环境强依赖项:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
-
IdentityFile指向的私钥路径(如/Users/you/.ssh/id_rsa)—— 新机器没这个文件或权限不对,连接直接拒绝 -
ProxyJump或ProxyCommand里写的跳板机地址、本地脚本路径(如~/bin/ssh-proxy.sh)—— 跨设备后路径失效 - 注释里写的临时说明(比如
# test env, delete before prod)看似无害,但某些 SSH 客户端解析严格,带中文或特殊符号可能报错
建议导出前用文本编辑器打开 ~/.ssh/config,删掉或注释掉所有含 ~、C:、/home/、/Users/ 的行,把 IdentityFile 改成相对路径(如 ./id_rsa),并确保私钥已同步到目标机器同目录下。
Remote-WSL 和 Remote-Containers 的配置怎么导出
这两类远程开发配置不走 SSH,所以不在这份 config 里:
-
Remote-WSL的设置全在settings.json里,关键字段是remote.WSL.defaultDistribution和remote.WSL.rememberDefaultVersion—— 导出前要删掉绝对路径类值(如"remote.WSL.explorerMountPoint": "C:\wsl\...") -
Remote-Containers的配置在项目根目录的.devcontainer/devcontainer.json,这是纯项目级文件,直接随代码 Git 提交即可,不用单独导出 - 如果你用过 Remote-SSH 的“自动转发端口”或“扩展安装在远端”,这些行为由
settings.json中的remote.ssh.enableDynamicForwarding、remote.ssh.defaultExtensions控制 —— 它们属于跨平台通用字段,可保留,但注意defaultExtensions里的插件名要确保在新机器上可用(比如ms-python.python在旧版叫ms-python.vscode-pylance)
真正容易被忽略的是:Remote 场景下,VSCode 启动时会优先加载远端机器上的 ~/.vscode-server/data/Machine/settings.json,它和本地 settings.json 是两套。迁移时如果只导出本地文件,远端环境的行为可能完全不一样。

















