vscode remote-ssh无真正断开快捷键,ctrl+d或exit仅退出终端shell,不终止远程会话;唯一可靠方式是点击左下角绿色状态栏选择“close remote connection”或运行命令“remote-ssh: close remote connection”,以彻底杀掉vscode-server、释放端口及ssh隧道。

VSCode Remote-SSH 没有真正意义上的“断开快捷键”——所有声称 Ctrl+D 或 exit 能断开连接的说法,都是错的。 它们只关终端 shell,不终止远程会话、不释放端口、不杀 vscode-server 进程。
Ctrl+D / exit 为什么不算断开连接
这两个操作只是退出当前集成终端里的一个 bash/zsh 会话,Remote-SSH 插件底层维持的 SSH 隧道、端口转发、文件监听、远程 vscode-server 进程全部照常运行:
- 左下角状态栏仍显示
SSH: your-host - 远程服务器上执行
ps aux | grep vscode仍能看到node /home/user/.vscode-server/... - 本地执行
ps aux | grep ssh仍有对应 SSH 进程存活 - 下次打开终端,会复用旧会话,而非新建连接
长期积累会导致内存泄漏、端口冲突,甚至下次连接卡在 Setting up SSH Host。
真正断开 Remote-SSH 的唯一可靠方式
必须触发插件级清理流程,它会同步杀掉远程 vscode-server、关闭所有端口转发、释放 SSH 隧道、清空本地缓存:
- 点击左下角绿色状态栏(显示
SSH: xxx的位置)→ 选择Close Remote Connection - 或按
Ctrl+Shift+P(Windows/Linux)/Cmd+Shift+P(macOS)→ 输入并运行Remote-SSH: Close Remote Connection - 不要点 “Keep Window”,让 VSCode 自动切换回本地工作区
如何验证是否真断开了
光看界面状态栏不够,必须确认两端进程都已退出:
- 远程执行:
ps aux | grep vscode-server→ 应无输出 - 本地执行:
ps aux | grep 'ssh.*-R'或lsof -i :<port></port>(查转发端口)→ 应无活跃连接 - 断开后重新连接,不应卡在
Setting up SSH Host或报Connection refused
最容易被忽略的是:断开后没验证进程残留,就直接重连——这时新连接会和旧进程抢资源,反而更易失败。











