如何解决VS Code Remote SSH断开后重连反复提示密码的问题
根因说明
- SSH连接无保活机制,长时间无流量触发服务器/本地的SSH会话超时断开,残留的远程VS Code Server进程进入僵死状态,占用对应连接端口与锁文件,导致重连时即使密码正确也无法完成握手认证
- 远程VS Code Server异常断开时未自动清理运行时产生的临时锁文件,新连接尝试读取旧锁文件导致认证逻辑卡死
- 密码认证的会话缓存异常失效,重连时无法复用已有认证上下文,触发反复弹出密码输入框的问题
永久配置解决方案
1. 配置SSH保活机制避免超时断开
本地VS Code侧配置
打开VS Code设置,搜索Remote SSH: Server Alive Interval,设置为30(单位为秒,每30秒向服务器发送一次保活包),再搜索Remote SSH: Server Alive Count Max,设置为10(最多连续10次保活无响应才判定连接断开)。
也可以直接编辑settings.json添加如下配置:
"remote.SSH.serverAliveInterval": 30, "remote.SSH.serverAliveCountMax": 10
远程服务器侧配置
使用root权限编辑/etc/ssh/sshd_config文件,添加或修改以下参数:
ClientAliveInterval 30 ClientAliveCountMax 10
修改完成后执行systemctl restart sshd使配置生效。
2. 优化远程VS Code Server异常处理逻辑
在VS Code的settings.json中添加以下配置,解决僵死进程、锁文件导致的重连失败问题:
- 连接失败时自动清理旧的Server进程:
"remote.SSH.killServerOnFailure": true - 禁用连接复用避免认证上下文冲突:
"remote.SSH.enableConnectionReuse": false - 关闭后台自动更新避免更新操作触发连接断开:
"remote.SSH.enableAutoInstall": false(需要手动更新Server时临时打开即可)
3. 改用SSH密钥认证代替密码登录
本地生成SSH密钥对后,将公钥上传到远程服务器的~/.ssh/authorized_keys文件中,可完全避免重连时反复弹出密码输入框的问题,同时提升认证效率。
4. 修复VS Code Server重复安装问题
如果每次重连都需要执行长时间的安装脚本,说明远程~/.vscode-server目录权限异常,执行以下命令修复即可:
sudo chown -R $(whoami):$(whoami) ~/.vscode-server chmod -R 755 ~/.vscode-server
权限修复后后续连接无需重复安装Server。
诊断日志生成方法
如需进一步排查问题,可按以下步骤获取完整诊断日志:
- 打开VS Code命令面板,执行
Remote-SSH: Open SSH Configuration File,选中对应远程主机的配置项,添加参数LogLevel DEBUG3 - 打开命令面板执行
Toggle Developer Tools,切换到Console标签页即可看到全链路的Remote SSH连接日志,复制对应时间段的日志即可用于问题分析 - 也可以执行命令面板的
Remote-SSH: Show Log命令,选择Remote - SSH输出通道,查看连接过程的详细分步日志
内容的提问来源于stack exchange,提问作者Philip Maybank
相关产品推荐
相关产品推荐

