Remote-SSH连接成功仅是起点,真正卡点在于Python路径未配置、环境变量未加载、vscode-server安装失败及终端初始化阻塞;ssh命令行不通则VSCode必失败,需先确认sshd运行、端口开放、密钥权限为600,并手动安装远程Python环境与指定解释器路径。

能连上不代表能运行代码——Remote-SSH 连接成功只是起点,真正卡住人的在 Python 路径、环境变量、vscode-server 安装和终端初始化这四步。
ssh 命令行不通,VSCode 一定失败
Remote-SSH 完全依赖系统 ssh 客户端,不是“插件独立运行”。如果终端里执行 ssh user@host 都报 Connection refused 或卡在 Setting up SSH Host,别急着调 VSCode 设置。
- 先确认远程
sshd在运行:sudo systemctl status sshd - 检查端口(默认 22)是否被防火墙拦住:
sudo ufw status或sudo ss -tuln | grep :22 - 非标准端口(如 2222)必须写进
~/.ssh/config的Port字段,-p 2222命令行参数 Remote-SSH 不识别 - 密钥权限必须是
600:chmod 600 ~/.ssh/id_rsa,否则报Permission denied (publickey)
连接后 which python3 返回空,说明环境根本没配
Remote-SSH 只负责把编辑器界面连过去,python、node、gcc 全靠服务器自己装。连上了却 F5 报错“Python interpreter not found”,90% 是这个原因。
- 在 VSCode 内置终端里手动执行:
which python3,返回空就代表没装或不在$PATH - Ubuntu/Debian:
sudo apt update && sudo apt install python3 python3-pip - CentOS/RHEL:
sudo yum install python3 python3-pip(或dnf) - 用 conda?必须先在远程终端里
source activate myenv,再从该终端执行code .启动 VSCode,否则环境不继承 - F5 调试前,务必打开命令面板 →
Python: Select Interpreter→ 手动选远程路径,比如/usr/bin/python3或~/miniconda3/envs/myenv/bin/python
Installing VS Code Server 卡住超过 2 分钟,大概率是网络问题
VSCode 第一次连接时,会在远程自动拉取 vscode-server(位置:~/.vscode-server/bin/)。它依赖远程能访问 update.code.visualstudio.com,内网、代理、DNS 污染都会导致失败。
- 检查远程能否通外网:
curl -I https://update.code.visualstudio.com - 若超时,手动下载对应 commit 的包:
https://update.code.visualstudio.com/commit:<code>xxxxxx/server-linux-x64/stable(xxxxxx是你本地 VSCode 关于页里的 Commit ID) - 传到远程:
scp vscode-server-linux-x64.tar.gz user@host:~ - 登录远程解压:
mkdir -p ~/.vscode-server/bin/<code>xxxxxx&& tar -xzf vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/xxxxxx - 注意:
~/.vscode-server/bin/下的子目录名必须和 commit hash 完全一致,大小写都不能错
改了代码但输出还是旧的,不是同步延迟就是进程没杀干净
Remote-SSH 默认只同步当前打开并保存的文件,不是实时 rsync 整个目录。而且调试器启动后,旧进程可能还挂着。
- 右下角显示
Syncing changes…时,等它消失再运行 - 强制上传单个文件:右键文件 →
Upload to … - 运行前查残留进程:
ps aux | grep python,尤其留意flask run、uvicorn、python main.py这类后台服务 - 别依赖 Ctrl+C 终止——有时它只停了前台 shell,进程还在后台跑,用
kill -9 $(pgrep -f "your_script.py")更可靠
最常被忽略的是 shell 初始化逻辑:如果远程 ~/.bashrc 或 ~/.zshrc 里有阻塞操作(比如卡在 git status 或网络请求),VSCode 的远程终端会一直等它结束,导致解释器路径读不到、环境变量不生效。建议把可疑的交互式逻辑包在 [[ $- == *i* ]] 判断里。


















