Remote-SSH 连接失败主因是密钥权限错误(需 chmod 600)、ssh_config 配置错误(Host 别名禁用下划线/大写,端口须在配置中指定)、VSCode 未加载正确配置文件(需通过 SSH_CONFIG_FILE 环境变量指定路径)。

Remote-SSH 插件连不上服务器的常见报错
连不上基本就三类问题:密钥权限不对、ssh_config 配置写错、VSCode 没读到正确的 SSH 配置文件。最典型的是 Permission denied (publickey),不是密码错了,而是本地私钥没被识别或服务端拒绝了该密钥。
-
~/.ssh/config文件里 Host 别名不能含下划线或大写字母,否则 Remote-SSH 会静默忽略整段配置 - 私钥文件权限必须是
600(chmod 600 ~/.ssh/id_rsa),Windows 上用 OpenSSH for Windows 时还得确认私钥是 PEM 格式,PuTTY 的.ppk不支持 - 如果服务器改过 SSH 端口,别只在命令行加
-p 2222,一定要在~/.ssh/config里写Port 2222,Remote-SSH 不解析命令行参数
如何让 Remote-SSH 正确加载自定义 ssh_config 路径
VSCode 默认只认 ~/.ssh/config,如果你把配置放在别处(比如项目目录下的 ssh-config),它不会自动发现。没有“指定配置路径”的图形开关,只能靠环境变量骗过去。
- 启动 VSCode 前设置
export SSH_CONFIG_FILE=/path/to/your/ssh-config(Linux/macOS)或set SSH_CONFIG_FILE=C:\path\to\ssh-config(Windows CMD) - macOS 用户如果用 Dock 启动 VSCode,环境变量不生效,得从终端运行
code --remote ssh-remote+myhost - 配置文件中不要用
Include指令引用其他文件,Remote-SSH 目前不支持嵌套包含
连接后终端卡住或无法启动 Python 环境
这不是网络问题,是远程 Shell 初始化逻辑和 VSCode 的交互冲突。Remote-SSH 启动时默认执行 bash -i -l,但很多用户的 ~/.bashrc 或 ~/.zshrc 里有阻塞操作(比如检测 TTY、调用 API、等待用户输入)。
- 检查
~/.bashrc开头是否有[[ -z $PS1 ]] && return这类守卫,没这句的话非交互式 shell 也会执行全部逻辑 - Python 解释器找不到?确认
which python3输出路径是否在$PATH中,Remote-SSH 不会自动 source/etc/profile,建议在~/.bashrc末尾显式追加export PATH="/usr/local/bin:$PATH" - 连接后左下角显示 “Opening remote…” 卡住超过 30 秒,大概率是
~/.bashrc里调用了慢命令(如git status),注释掉再试
多跳(Jump Host)配置怎么写才有效
Remote-SSH 支持 ProxyJump,但语法必须严格,少一个点都会 fallback 到密码提示甚至连接失败。
- 正确写法:
Host jump<br> HostName 192.168.1.100<br> User admin<br>Host target<br> HostName 10.0.0.5<br> User dev<br> ProxyJump jump
- 不能写成
ProxyCommand ssh -W %h:%p jump—— Remote-SSH 不走这个老式代理方式,只认ProxyJump - 跳板机和目标机用不同密钥?在
jump段加IdentityFile ~/.ssh/jump_key,在target段加IdentityFile ~/.ssh/target_key,别混用
真正麻烦的从来不是连上,而是连上之后 VSCode 拿不到你预期的环境变量和 shell 行为。每次改完 ~/.bashrc 或 ~/.ssh/config,记得关掉所有 Remote-SSH 窗口再重连——它会缓存连接状态,热重载不生效。


















