Remote-SSH卡在“Setting up SSH Host”或“Setting up SSH tunnel”主因是认证失败、VS Code Server下载中断或远程环境不兼容;非网络慢或软件故障。

Remote-SSH 卡在 “Setting up SSH Host” 或 “Setting up SSH tunnel” 基本上是认证失败、下载中断或远程环境不兼容三类问题之一,不是网络慢,也不是 VSCode 坏了。
Remote-SSH 卡在 “Setting up SSH Host”:先看是不是密钥或密码没过
VSCode Remote-SSH 默认走密钥登录,如果远程服务器只开了密码认证(PubkeyAuthentication no),它不会弹密码框,而是反复重试密钥 → 卡住 → 显示“Setting up SSH Host”。
- 按
Ctrl+Shift+P运行Remote-SSH: Show Log (Verbose),重点搜Permission denied (publickey)或Connection closed by remote host - 确认本地私钥权限是
600:chmod 600 ~/.ssh/id_rsa,OpenSSH 会直接忽略 644 或更宽松的权限 - 想强制走密码登录?打开
Remote-SSH: Settings,勾选Remote.SSH: Show Login Terminal,重连后终端里手动输密码 - 检查远程
/etc/ssh/sshd_config:确保PubkeyAuthentication yes和PasswordAuthentication yes(如需密码)已启用
卡在 “Downloading VS Code Server”:本质是远程端没装好 server
这一步不是在本地下载,而是在远程服务器上执行 wget 或 curl 下载 vscode-server-linux-x64.tar.gz。一旦超时、404、DNS 解析失败或磁盘满,VSCode 就无限重试,界面卡死。
- 手动确认 commit ID:Help → About → 复制
Commit后那串 40 位 hex(别带空格或%20) - 用浏览器直连下载链接,注意架构匹配:
https://update.code.visualstudio.com/commit:863d2581ecda6849923a2118d93a088b0745d9d6/server-linux-x64/stable - 下载完上传到远程,解压到
~/.vscode-server/bin/<commit-id></commit-id>(注意路径必须严格匹配,--strip=1解压) - 远程执行
chmod 750 -R ~/.vscode-server/bin/<commit-id></commit-id>,否则启动失败
卡在 “Setting up SSH tunnel”:大概率是动态转发开关惹的祸
这个提示出现时,VSCode 已完成认证和 server 安装,正试图开一个 SOCKS5 隧道用于后续端口转发。但如果你没配过 DynamicForwarding,且远程 sshd_config 没开 AllowTcpForwarding yes,它就会卡住不动。
- 按
Ctrl+Shift+P→Remote-SSH: Settings→ 找到Remote.SSH: Enable Dynamic Forwarding - 取消勾选,保存,重启连接
- 如果确实需要动态转发(比如代理浏览器流量),请确认远程
/etc/ssh/sshd_config包含AllowTcpForwarding yes并重载sudo systemctl reload sshd
远程 shell 是 zsh / fish 导致 “initializing vscode server” 卡住
VSCode 的 server 安装脚本依赖 POSIX 兼容的 shell 行为。某些 zsh/fish 配置(比如在 .zshrc 里改 PATH 或加 echo)会让初始化脚本解析失败,表现为卡在 “initializing vscode server”,几小时后才报错。
- 临时切回 bash:
chsh -s /bin/bash,再重连 - 不想换默认 shell?可在 VSCode 连上后,打开集成终端 → 点右下角 shell 选择器 → 切到 zsh
- 不要在
.zshrc开头加非静默输出(如echo "hello"或未加[ -z $VSCODE_PID ] || return的判断)
真正容易被忽略的是:VSCode 不会告诉你卡在哪一行 shell 脚本里,也不会提示 .zshrc 多了一行 echo 就能让整个初始化失败。遇到 “initializing” 卡住,先关掉所有非 bash shell 的干扰,比手动重装 server 更快。


















