尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

VS Code Remote-SSH 连接故障排查手册(精详版)

VS Code Remote-SSH 连接故障排查手册(精详版) VS Code Remote-SSH 连接故障排查手册精详版常奏效办法rm -rf ~/.vscode-server 第一步终端测试决定方向不要跳过这一步的目的确认服务器是否活着、SSH服务是否正常、你的本地SSH客户端能否正确解析别名。测试 1Ping 测试快速但非必须ping ga结果含义下一步Ping request could not find host gaga是 SSH 别名不是 DNS 域名ping 不认识它。这是正常的不代表失败。跳过 ping直接进入测试 2Reply from xxx.xxx.xxx.xxx ...如果 ping 能通说明网络层IP是通的这是加分项继续测试 2Request timed out网络层不通可能是防火墙禁 ping 或主机真的离线检查 VPN/防火墙/IP 是否正确⚠️ 关键认知ping不通不代表 SSH 连不上很多服务器禁 pingping通也不代表 SSH 连得上可能端口被封。所以ping 仅作参考不是决定性测试。测试 2调试模式 SSH黄金诊断命令ssh-vvv ga-vvv是最高级别调试输出会打印出 SSH 握手全过程的每一步。逐行解读输出关键输出行含义判断debug1: Connecting to xxx.xxx.xxx.xxx [xxx.xxx.xxx.xxx] port 23.SSH 正在尝试连接目标 IP 的特定端口记下端口号这里是 23。如果端口不是 22说明你的服务器用了非标准端口卡在Connecting to ...超过 20 秒最后报Connection timed outTCP 握手没有得到回应网络不通 / 防火墙拦截 / 主机离线出现Connection refused端口没有监听或防火墙主动拒绝SSH 服务没启动或端口配置错误debug1: Connection established.TCP 三次握手成功网络层通了进入协议层debug1: Authentications that can continue: publickey,password服务器要求认证网络和 SSH 协议都正常问题在认证密钥/密码debug1: Authentication succeeded (publickey).认证成功继续往下看Welcome to Ubuntu 22.04.2 LTS...成功登录服务器活着SSH 服务正常你的 config 在终端环境有效关键判断✅-vvv**如果 能连上→ 服务器活着问题在 VS Code 本地环境路径、配置、缓存等。去执行第三步**。❌-vvv**如果 连不上→ 问题在服务器端或网络层主机死机 / 防火墙 / VPN / SSH 服务挂了。去执行第四步服务器端检查**但根据你的实际情况你大概率是前者。测试 3普通模式 SSH确认无调试干扰ssh ga结果含义能正常登录~/.ssh/config里的Host ga在终端环境下有效证书/端口/用户都正确报Could not resolve hostname ga终端环境也解析不了别名 → 检查 config 文件语法见第五步**-vvv-vvvssh ga**⚠️ 如果测试 2 能连但测试 3 连不上说明 时你用了额外的参数或 config 被覆盖了最常见的是 自动启用了更宽松的解析模式。这种情况少见直接以 结果为准。测试 4模拟 VS Code 的工作目录定位 Windows 特有 BugVS Code 调用ssh.exe时当前工作目录是C:\Windows\System32。而在终端里测试时工作目录是C:\Users\Administrator。这个差异是 Windows 环境下大量“终端能连但 VS Code 不行”的元凶。# 切换到 VS Code 的工作目录cd C:\Windows\System32# 执行 SSH-F 强制指定 config模拟 VS Code 带 configFile 的情况C:\Windows\System32\OpenSSH\ssh.exe-FC:\Users\Administrator\.ssh\configga# 再试一次不带 -F模拟 VS Code 删除了 configFile 的情况C:\Windows\System32\OpenSSH\ssh.exega结果含义解决方案带-F失败不带-F成功Windows OpenSSH 在System32目录下带-F解析 Config 有 Bug**settings.json****remote.SSH.configFile****删除 里的 **让 VS Code 不带-F你就是这样成功的带-F和不带-F都失败Config 文件本身有语法错误或在System32下根本读不到检查 config 是否有自引用HostName ga、重复定义检查第五步带-F和不带-F都成功你的 Config 文件在System32下也能正确解析说明你环境很干净直接去第六步检查 VS Code 设置**ssh ga**这条测试是很多 Windows 用户的关键卡点。如果你之前 在终端能进但 VS Code 里死活不行大概率就是这一层的问题。 第二步根据终端测试结果判断故障层级测试结果组合故障诊断应执行的操作ssh -vvv ga连不上ping不通网络不通/主机离线检查 VPN、防火墙、主机电源ssh -vvv ga连不上ping通端口被封或 SSH 服务挂了检查云服务商安全组、服务器sshd状态ssh -vvv ga能连ssh ga能连cd System32测试失败VS Code 环境与终端环境不一致执行第五步修 Config和第六步修 settings.jsonssh ga在终端能连VS Code 里ga超时但 IP 直连能连别名解析在 VS Code 环境下失效直接改用 IP 直连第八步或彻底重写 Config 第三步清理服务器端当确认服务器活着但 VS Code 仍超时时# 通过 SSH 登录服务器sshga# 1. 检查磁盘使用率df-h/# 如果 Use% 95%执行清理pip cache purge conda clean-afy# 如果有 sudo 权限apt clean journalctl --vacuum-size500M# 2. 杀死卡死的 VS Code 服务端进程pkill-u$(whoami)-fvscode-server# 3. 清理 /tmp 锁文件rm-rf/tmp/vscode-remote-lock.* /tmp/vscode-*# 4. 可选彻底删除服务端缓存强制重装rm-rf~/.vscode-server 第四步彻底检查服务器端健康如果终端连不上**ssh -vvv**如果你在第一步 就彻底连不上需要检查服务端。但根据你的实战经历你的情况是终端能连但 VS Code 不行所以这一步你大概率不需要。保留仅作参考# 通过云控制台 VNC 或带外管理进入服务器systemctl status sshd# 检查 SSH 服务状态ss-tlnp|grepxxx# 检查 23 端口是否在监听df-h# 磁盘是否满了free-h# 内存是否充足dmesg|tail-20# 查看内核日志有无 OOM Kill 第五步修复本地~/.ssh/config文件核心# 查看当前 config 内容catC:\Users\Administrator\.ssh\config检查清单检查项错误示例正确示例后果HostName是否指向自己HostName gaHostName xxx.xxx.xxx.xxx自引用导致死循环解析失败同一Host是否重复定义出现 3 次Host ga只有 1 次Host ga解析器混乱可能忽略整个条目IdentityFile路径是否正确C:\Users\...反斜杠C:/Users/...正斜杠反斜杠在某些上下文中会被转义Port是否写对默认 22 或不写Port xxx连到错误端口正确模板复制替换Host ga HostName xxx.xxx.xxx.xxx User ga Port xxx IdentityFile C:/Users/Administrator/.ssh/xxx密钥文件 Host du HostName xxx.xxx.xxx.xxx User du Port xxx Host feng HostName xxx.xxx.xxx.xxx User feng Port xxx保存后验证# 在 System32 目录下测试模拟 VS Code 环境cd C:\Windows\System32C:\Windows\System32\OpenSSH\ssh.exe-FC:\Users\Administrator\.ssh\configga如果这条命令能连说明 Config 在 VS Code 环境下也能用了。如果依然报Could not resolve hostname说明 Config 还有隐藏问题。⚙️ 第六步修正 VS Code 的settings.json按Ctrl Shift P→Preferences: Open User Settings (JSON)。推荐的最终干净配置{// 必须保留锁定系统 SSH 路径防止百度网盘等 PATH 污染remote.SSH.path:C:\\Windows\\System32\\OpenSSH\\ssh.exe,// 远程平台声明remote.SSH.remotePlatform:{ga:linux,feng:linux,du:linux},// 以下配置建议删除如果存在// remote.SSH.configFile: ... ← 删掉Windows 下强制 -F 有 Bug// remote.SSH.useLocalServer: true ← 删掉保持 false 最稳// 长期防断联强烈推荐files.watcherExclude:{**/data/**:true,**/checkpoints/**:true,**/logs/**:true,**/mnt/DEV2/**:true}}保存后完全退出 VS Code确保任务管理器无 Code.exe 进程重新打开。 第七步在 VS Code 中测试连接1. 打开 VS Code 远程资源管理器。2. 点击添加新的 SSH 主机。3. 输入ga或者ga-ip如果你创建了新别名。4. 按回车。结果含义下一步✅ 秒连成功全链路打通将ga保存为常用连接享受成果❌ 依然超时报Could not resolve hostname别名在 VS Code 环境中依然无效执行第八步终极兜底❌ 超时但不报Could not resolve卡在Connecting...端口或网络问题回到第一步确认ssh -vvv ga在 System32 目录下是否仍然有效 第八步终极兜底绕过一切别名解析问题在 VS Code 点击直接输入用户名服务器IP:端口例如gaxxx.xxx.xxx.xxx:23xxx用户xxx.xxx.xxx.xxx:xxx端口这种格式的特点不依赖~/.ssh/config中的任何Host定义不读取任何别名不依赖环境变量HOME或工作目录只要网络通、端口通、密钥在默认位置或已加载100% 能连如果这条命令依然失败说明问题不在别名解析而在网络层或服务端回到第一步用-vvv排查。️ 第九步预防性维护每月一次# 登录服务器后执行pip cache purge conda clean-afy# 查看磁盘使用情况df-h/# 如果磁盘使用率 90%检查哪个目录在吃空间sudodu-sh/*2/dev/null|grep-v/mnt|sort-h 快速决策树按优先级排序┌─ 1. 终端执行 ssh -vvv ga ─┐ │ │ │ 能连上吗 │ │ ├─ 是 → 服务器活着 │ │ │ 执行 2 │ │ └─ 否 → 检查网络/防火墙/VPN/服务端 │ ├─ 2. cd System32 测试 ─────┤ │ │ │ ssh ga 在 System32 下能连吗 │ ├─ 能 → 问题在 VS Code 设置 │ │ 执行 6修 settings.json │ └─ 否 → 问题在 Config 文件 │ 执行 5修 config │ 还不行 → 执行 8IP 直连 │ ├─ 3. 确认磁盘空间 ─────────┤ │ │ │ df -h / 是否 95% │ ├─ 是 → 执行 3清理空间 杀进程 │ └─ 否 → 跳过 │ ├─ 4. VS Code 连接测试 ────┤ │ │ │ 点 ga 能连吗 │ │ ├─ 是 → 完成 │ │ └─ 否 → 执行 8IP 直连 │ └─ 5. 如果 IP 直连也超时 ──┘ 回到第一步检查服务器端 sshd 状态注部分内容可能由 AI 生成
返回列表