【Linux】VSCode Remote-SSH 无法连接并反复要求输入密码问题详解

【Linux】VSCode Remote-SSH 无法连接并反复要求输入密码问题详解

文章目录

Visual Studio Code(简称 VS Code)作为一款广受欢迎的轻量级编辑器,其 Remote-SSH 插件为开发者带来了便捷的远程开发体验。然而,在使用 Remote-SSH 插件连接远程服务器的过程中,很多用户会遇到输入密码后仍无法连接的问题,甚至被持续提示输入密码。本文将围绕这一常见问题展开详细分析,并结合真实解决过程,帮助开发者顺利排查与解决相关故障。

一、问题现象描述

1. 典型表现

当使用 VS Code 的 Remote-SSH 功能连接远程服务器时:

  • 成功输入密码后,VS Code 并未正常连接服务器;
  • 系统反复弹出“请输入 SSH 密码”的提示窗口;
  • 即使密码无误,连接始终无法建立;
  • Terminal 中可能看到 "Retrying after error: Connection refused""Permission denied" 之类的提示;
  • 有时会自动执行安装 VS Code Server 的命令,但无反应或失败。

2. 常见的误区尝试

  • 反复重启 VS Code;
  • 更换网络环境;
  • 再三确认 SSH 密码是否输入正确;
  • ~/.ssh/config 中重新配置主机信息;
  • 尝试通过命令行使用 ssh user@host 连接远程主机,结果显示一切正常。

但令人困惑的是,即便通过终端可以正常使用 SSH 登录,Remote-SSH 插件却依然连接失败。

二、原因分析

该问题的根本原因通常并不在于 SSH 配置错误或网络异常,而是出现在 VS Code 在服务器上部署的 vscode-server 出现异常或损坏

Remote-SSH 插件在首次连接服务器时,会自动将一个小型的 vscode-server 程序上传至远程主机的 ~/.vscode-server 目录中,并通过该程序建立编辑器与远程主机之间的通信。

当这个 vscode-server 出现以下情况时就可能导致问题:

  • 安装过程中被中断;
  • 升级 VS Code 后版本不一致;
  • .vscode-server 目录权限错误或文件损坏;
  • 残留的临时文件引起冲突;
  • 磁盘空间不足或远程主机资源紧张。

三、解决方案详解

1. 首选方式:清除服务器上的 vscode-server

可以通过清除服务器上的 .vscode-server 目录来强制 VS Code 在下次连接时重新部署该服务。操作步骤如下:

第一步:登录远程服务器(如果你有办法…)

第二步:删除 .vscode-server 目录

rm -rf ~/.vscode-server 
注意:如果使用的是 VS Code Insiders,则目录名可能为 ~/.vscode-server-insiders;也有使用的是 ~/.vscode-remote,需根据具体情况处理。

第三步:重新连接 VS Code Remote-SSH

重新在 VS Code 中打开命令面板(Ctrl + Shift + P),执行:

Remote-SSH: Connect to Host... 

选择目标主机,系统将重新部署 VS Code Server,并建立新的连接。

2. 备选方式:使用 Remote-SSH 提供的清理命令

如果你希望使用 GUI 操作,也可以执行:

Remote-SSH: Kill VS Code Server on Host... 

然后选择对应的主机。该命令会尝试远程执行清理任务,终止正在运行的 server 实例并删除缓存目录。

然而在某些场景中,该命令无法完全清理干净,此时建议回到方案一手动删除。

3. 验证连接是否恢复正常

删除后再次连接时,VS Code 应该会提示:

Installing VS Code Server on remote... 

几秒钟后如果一切顺利,你将进入远程环境,文件树、终端等功能正常显示,问题解决。

四、其他可能性排查

1. 检查 SSH 密钥方式是否启用

如果使用的是密钥认证方式(推荐),请确认以下几个方面:

  • 公钥是否已添加至远程主机的 ~/.ssh/authorized_keys
  • 私钥权限为 600,即 chmod 600 ~/.ssh/id_rsa
  • ssh-agent 正确启动并加载私钥
  • .ssh/config 文件配置是否正确,如下:
Host my-server HostName 192.168.1.100 User myuser IdentityFile ~/.ssh/id_rsa 

2. 确保服务器未被防火墙或权限阻止

有些服务器可能对特定 IP 或端口有限制。你可以在服务器端查看 /var/log/auth.log 或使用以下命令查看是否有登录记录:

sudo journalctl -u ssh

3. 更新 Remote-SSH 插件

确保你使用的是最新版 Remote-SSH 插件,有些旧版本存在稳定性问题。打开插件管理器,搜索 Remote - SSH 并点击更新。

推荐:JavaScriptreactvue

在这里插入图片描述

Read more

【JAVA全栈项目】弧图图-智能图床SpringBoot+MySQL API接口结合Redis+Caffeine多级缓存实践解析

【JAVA全栈项目】弧图图-智能图床SpringBoot+MySQL API接口结合Redis+Caffeine多级缓存实践解析

文章案例具体代码链接:https://github.com/whltaoin/hututu 提交版本:e67453a26f0bbe78ce075a550bafb01ba82aa9ff 简言 在后端开发中,API接口是服务间通信的核心载体,而数据存储与缓存策略则直接决定了接口的性能与稳定性。Spring框架凭借其强大的生态成为API开发的首选,MySQL作为关系型数据库提供了可靠的数据持久化支持。当系统并发量提升时,单一数据库架构易出现性能瓶颈,此时引入Redis(分布式缓存)与Caffeine(本地缓存)构建多级缓存体系,成为优化性能的关键方案。本文将从基础实现出发,深入探讨多级缓存的优势、劣势、适用场景及实践注意点。 文章目录 * 简言 * 一、基础架构:Spring+MySQL实现API接口 * 1.1 核心组件与依赖 * 1.2 核心实现流程 * 二、多级缓存:Redis+Caffeine的组合逻辑 * 2.1 组件特性对比 * 2.2 多级缓存工作流程 * 三、多级缓存的优势与劣势

By Ne0inhk
【Java篇】无形至有形,法与道的编织:类与对象初探

【Java篇】无形至有形,法与道的编织:类与对象初探

文章目录 * 类和对象(上) * 一、面向对象的初步认知 * 1.1 什么是面向对象 * 1.2 面向对象与面向过程 * 二、类定义和使用 * 2.1 简单认识类 * 2.2 类的定义格式 * 2.3 小练习 * 2.3.1 定义一个狗类 * 2.3.2 定义一个学生类 * 三、类的实例化 * 3.1 什么是实例化 * 3.2 类和对象的说明 * 四、this引用 * 4.1 为什么要有 this 引用 * 4.2 什么是 this 引用

By Ne0inhk
Java 大视界 -- Java 大数据机器学习模型在金融风险管理体系构建与风险防范能力提升中的应用(435)

Java 大视界 -- Java 大数据机器学习模型在金融风险管理体系构建与风险防范能力提升中的应用(435)

Java 大视界 -- Java 大数据机器学习模型在金融风险管理体系构建与风险防范能力提升中的应用(435) * 引言: * 正文: * 一、金融风控的技术选型逻辑:为何 Java 是核心基石? * 1.1 金融风控的核心技术诉求 * 1.2 Java 生态在金融场景的不可替代性 * 1.3 大数据 + 机器学习的技术融合架构 * 二、核心落地:Java 大数据 + 机器学习的全链路实现 * 2.1 数据层:金融级数据治理(风控的 “生命线”) * 2.1.1 核心痛点与解决方案(真实项目数据) * 2.1.2 实战代码:Java 数据清洗工具类(Spark SQL 集成,可直接运行)

By Ne0inhk
Java 8 Stream API:传统实现和流式编程的范式对比

Java 8 Stream API:传统实现和流式编程的范式对比

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 技术合作请加本人wx(注明来自ZEEKLOG):foreast_sea

By Ne0inhk