最典型报错是“ssh: Could not resolve hostname”或“Permission denied (publickey)”,但根本原因并非DNS或密钥问题,而是VSCode未按JumpServer KOKO协议构造连接串;正确格式必须为ssh jumpserverUsername@systemUsername@AssetIP@jumpserverHostIP -p2222,缺一@或顺序错误即触发域名解析失败。

VSCode 连不上 JumpServer 授权的资产,常见报错是啥
最典型的是 ssh: Could not resolve hostname 或 Permission denied (publickey),但实际根本不是 DNS 或密钥问题——而是 VSCode 没走 JumpServer 的 KOKO 组件协议,直接按普通 SSH 解析了 AssetIP@jumpserverHostIP 这种字符串。
JumpServer 不是传统跳板机,它用 KOKO 代理 SSH 流量,要求客户端显式构造带认证信息的连接串,而不是靠 ProxyJump 自动转发。
-
ssh jumpserverUsername@systemUsername@AssetIP@jumpserverHostIP -p2222是唯一能被 KOKO 识别的格式,漏掉任意一个@或顺序错,就会当成普通域名解析失败 - Windows 用户尤其容易卡在路径问题:如果本地装了 Git for Windows,
ssh.exe路径必须写成C:/Program Files/Git/usr/bin/ssh.exe,不能用系统自带 OpenSSH - 中文用户名或主机名会导致乱码(如
\262\273\326\252),系统区域设置必须切为「英语(美国)」,且配置文件里避免任何中文字符
怎么配 .ssh/config 才能让 VSCode 认出 JumpServer 连接
不能套用标准 ProxyJump 写法——JumpServer 不接受那种配置。必须用 ProxyCommand 显式调用 ssh 并拼接完整连接串。
例如你登录 JumpServer 的账号是 admin,要连的资产系统用户是 ops,资产 IP 是 10.1.2.3,JumpServer 地址是 192.168.5.10,KOKO 端口是 2222:
Host jumpserver-asset HostName 10.1.2.3 User ops ProxyCommand C:/Program\ Files/Git/usr/bin/ssh.exe -p 2222 admin@192.168.5.10 -s "ssh -o StrictHostKeyChecking=no %r@%h"
注意三点:
-
-s "ssh -o StrictHostKeyChecking=no %r@%h"是关键:KOKO 通过ssh -s启动子会话,里面才是真正发给资产的命令 -
%r是User值(即ops),%h是HostName(即10.1.2.3),VSCode 会自动替换 - Linux/macOS 用户把路径换成
/usr/bin/ssh,但必须确认该 ssh 支持-s选项(OpenSSH ≥ 8.0)
为什么免密登录在 JumpServer 场景下特别容易失效
因为 JumpServer 的认证是两层:先验 JumpServer 账号密码(或 token),再由 KOKO 代你登录目标资产。所以 authorized_keys 放在哪、权限设多少,对 JumpServer 流程完全无效。
真正起作用的是 JumpServer 后台的「系统用户」和「资产授权」配置:
- 你在 JumpServer Web 界面添加的「系统用户」必须与
.ssh/config中的User完全一致(比如填ops,就不能写Ops或ops@prod) - 「资产授权」里必须精确匹配
AssetIP,且只允许一条记录匹配成功,多条或模糊匹配都会拒绝连接 - VSCode 连接时弹出的密码框,输的是 JumpServer 账号密码(不是目标机密码),输错一次就会触发风控锁定,得等管理员解封
Remote-SSH 插件连上后,.vscode-server 下载失败怎么办
不是网络慢,也不是磁盘满,大概率是 JumpServer 的 KOKO 组件限制了长连接或文件传输大小。VSCode 尝试下载服务端组件时,会被 KOKO 主动断开。
解决方法只有两个:
- 手动上传:
scp把本地~/.vscode-server目录整个打包传到目标资产的/home/ops/.vscode-server(注意保持 owner 和权限:目录700,内部文件600) - 换通道:在 JumpServer 后台关闭「Web Terminal」限制,或让运维临时开放
rsync白名单端口,让 VSCode 走 rsync 协议拉取组件 - 别开代理:本地开了 Clash、Surge 或系统代理,会导致 VSCode 的下载请求被重定向到错误出口,关掉再试
JumpServer 的本质是安全网关,不是透明隧道——所有流量都受控。想让它“像普通跳板机一样工作”,本身就是误解起点。


















