VS Code Remote-SSH 连接Jetson踩坑完整解决记录(网段不通+主机密钥变更双重故障)
-
- 一、问题背景
- 二、故障1:网线直连仍SSH连接超时(网段不匹配)
-
- [1. 故障根因](#1. 故障根因)
- [2. 两种修复方案](#2. 两种修复方案)
- [3. 配套补充排查](#3. 配套补充排查)
- [三、故障2:网段互通后VS Code连接失败(主机密钥校验报错)](#三、故障2:网段互通后VS Code连接失败(主机密钥校验报错))
-
- [1. 日志关键报错](#1. 日志关键报错)
- [2. 故障根因](#2. 故障根因)
- [3. 分步标准修复流程](#3. 分步标准修复流程)
-
- 步骤1:清除失效旧主机密钥
- 步骤2:手动SSH登录,信任新设备指纹
- [步骤3:清理VS Code远程缓存](#步骤3:清理VS Code远程缓存)
- [4. 兜底备用方案(永久关闭严格校验)](#4. 兜底备用方案(永久关闭严格校验))
- 四、完整排错优先级总结(新手直接照做)
- 五、踩坑总结
- 六、附加小技巧
一、问题背景
开发环境:Windows10 + VS Code Remote-SSH + NVIDIA Jetson 嵌入式设备
故障现象分两个阶段:
- 第一阶段:SSH连接超时
connect to host xxx port 22: Connection timed out,网线直连依旧无法连通; - 第二阶段:修改IP网段互通后,VS Code弹窗提示无法与xxx建立连接 ,终端日志打印
Host key verification failed主机密钥校验失败,远程服务管道写入中断。
二、故障1:网线直连仍SSH连接超时(网段不匹配)
1. 故障根因
Windows有线网卡IP:10.168.3.106/24,Jetson静态IP:192.168.3.101/24
两个设备子网掩码均为255.255.255.0,分属完全独立网段,直连网线无路由转发,数据包直接超时。
2. 两种修复方案
方案1:修改Windows有线网卡IP(推荐,无需改动Jetson)
-
打开「控制面板-网络和共享中心-更改适配器设置」,找到插Jetson网线的以太网;
-
右键属性 → IPv4,手动配置静态IP:
- IP地址:
192.168.3.105 - 子网掩码:
255.255.255.0 - 网关、DNS全部留空;
- IP地址:
-
CMD测试连通:
cmdping 192.168.3.101 ssh nvidia@192.168.3.101
方案2:修改Jetson静态IP适配Windows网段
-
Jetson端编辑netplan网络配置:
bashsudo nano /etc/netplan/00-installer-config.yaml -
修改IP配置段:
yamladdresses: [10.168.3.101/24] -
生效配置:
bashsudo netplan apply -
Windows端测试连通:
cmdping 10.168.3.101 ssh nvidia@10.168.3.101
3. 配套补充排查
-
确认网口状态:Windows以太网显示「已连接」,更换网线/网口排除硬件故障;
-
Jetson放行SSH端口:
bashsudo ufw allow 22 sudo ufw reload -
临时关闭Windows防火墙,避免拦截ICMP、SSH数据包。
三、故障2:网段互通后VS Code连接失败(主机密钥校验报错)
1. 日志关键报错
Host key for 10.168.3.101 has changed and you have requested strict checking.
Offending ECDSA key in C:\Users\16078\.ssh\known_hosts:13
Failed to parse remote port from server output
过程试图写入的管道不存在
2. 故障根因
Jetson刷机/重装系统后,设备SSH指纹(ECDSA密钥)发生变更;Windows本地known_hosts缓存了旧密钥,SSH严格校验机制直接拦截连接,导致VS Code远程服务安装管道中断,无法建立会话。
3. 分步标准修复流程
步骤1:清除失效旧主机密钥
打开Windows CMD执行命令,一键删除对应IP缓存密钥:
cmd
ssh-keygen -R 10.168.3.101
步骤2:手动SSH登录,信任新设备指纹
CMD执行登录命令,弹出密钥确认时输入yes,完整登录一次设备:
cmd
ssh nvidia@10.168.3.101
关键前提:必须手动ssh登录成功,VS Code才能正常安装远程服务。
步骤3:清理VS Code远程缓存
-
弹窗点击「关闭远程」,完全退出VS Code;
-
删除本地缓存目录:
C:\Users\你的用户名\.vscode\extensions\ms-vscode-remote.remote-ssh-版本号\.vscode-server -
重启VS Code,重新发起SSH连接。
4. 兜底备用方案(永久关闭严格校验)
编辑SSH配置文件 C:\Users\你的用户名\.ssh\config,写入主机配置:
Host 10.168.3.101
HostName 10.168.3.101
User nvidia
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
保存后重启VS Code即可绕过密钥校验。
四、完整排错优先级总结(新手直接照做)
- 先执行
ipconfig核对Windows网卡网段,和JetsonifconfigIP对比,确保同网段; - CMD手动ping、ssh测试连通性,确认网络无问题;
- 若ssh报密钥变更,执行
ssh-keygen -R 目标IP清除旧指纹; - 手动ssh登录一次设备,完成新指纹信任;
- 清理VS Code远程缓存,重启软件重连。
五、踩坑总结
- 网线直连≠同网段,静态IP设备必须手动对齐子网,这是嵌入式开发高频盲区;
- Jetson刷机/换系统后一定会触发SSH主机密钥变更,属于SSH安全机制,不是设备故障;
- VS Code Remote-SSH依赖底层原生ssh连通,只要CMD手动ssh报错,VS Code必然连接失败,优先在终端排查基础ssh。
六、附加小技巧
Jetson本地开发可使用tmux后台运行程序,避免远程断开导致程序终止;若长期远程调试,推荐配置SSH密钥免密登录,省去重复输入密码。