重装服务器后VSCode Remote SSH连接失败但直连SSH正常如何解决
问题根因
从报错日志可以判断,故障是因为VSCode Remote-SSH的远程初始化脚本使用了bash专属语法(如[[条件判断、function关键字定义函数),但脚本实际被POSIX标准的sh(dash)解析,触发语法错误导致初始化流程中断。
解决方案
第一步:清理服务端残留的VSCode缓存文件
先用SSH命令正常登录服务器,执行以下命令删除旧的远程服务端文件,避免残留损坏的配置干扰:rm -rf ~/.vscode-server执行完成后断开当前SSH连接。
第二步:确认并修改用户默认登录shell
重新登录服务器,执行命令查看当前用户的默认登录shell:echo $SHELL如果输出不是
/bin/bash,执行以下命令修改默认登录shell,按提示输入对应用户密码即可:chsh -s /bin/bash修改完成后断开SSH连接重新登录,再次执行
echo $SHELL确认配置已生效。第三步:排查shell配置文件异常
检查用户根目录下的~/.bashrc、~/.profile、~/.bash_profile三个配置文件,删除其中强制切换到sh的配置(如exec sh、export SHELL=/bin/sh这类语句),避免登录后自动切换到sh环境。第四步:本地VSCode强制指定远程执行shell
打开VSCode设置页,搜索Remote.SSH: Remote Shell配置项,在输入框中填入/bin/bash,强制Remote-SSH使用bash执行远程初始化脚本,避免适配问题。
所有配置完成后重启VSCode,重新发起Remote-SSH连接,插件会自动在服务端重新部署配套的服务端程序,即可正常连接。
内容的提问来源于stack exchange,提问作者Luther

