VSCode Remote SSH 一直转圈连不上服务器?踩坑全记录
VSCode Remote SSH 一直转圈连不上服务器踩坑全记录环境Ubuntu 服务器 / VSCode Remote SSH / Miniconda问题描述VSCode 通过 Remote SSH 连接服务器时一直显示正在连接转圈转个没完既不报错也不成功。奇怪的是用 XShell 可以正常登录同一个账号用 VSCode 连别人的账号也能成功去掉免密登录、改用密码登录依然没用排查过程第一步排除 vscode-server 安装问题VSCode Remote SSH 连上服务器后会在服务器的~/.vscode-server/目录下自动安装 vscode-server。如果这个目录不存在或文件残缺就会一直卡在下载阶段。ls~/.vscode-server/我的目录存在且有内容排除此原因。第二步排除网络问题curl-Ihttps://update.code.visualstudio.com服务器可以正常访问外网排除。第三步对比两个账号的 .bashrc把自己账号和能正常连接的账号的.bashrc对比发现两处差异差异一自己的.bashrc最后多了一行.$HOME/.local/bin/env差异二conda 初始化块的位置和保护方式不同。能正常连接的账号.bashrc开头有case$-in*i*);;*)return;;# 非交互式直接退出esac这个判断会让非交互式 shell 直接 return后面的 conda 块碰不到。而自己账号的.bashrc虽然也有这个判断但VSCode 使用的是 login shell走的是.bash_profile→ source.bashrc这条路$-里没有i标志导致 conda 初始化块仍然被执行有可能在此处卡住。第四步模拟 VSCode 的连接方式验证bash-li-cecho ok这条命令完全模拟了 VSCode 启动 shell 的方式。执行后立刻输出ok说明修改.bashrc之后 shell 本身没问题了。第五步发现真正的问题——vscode-server 残留进程.bashrc修复后VSCode 依然连不上。最终原因服务器上有残留的旧 vscode-server 进程和缓存文件导致新连接无法正常初始化。pkill-fvscode-serverrm-rf~/.vscode-server清理完毕重启 VSCode重新连接成功进入。根本原因总结原因说明.bashrc中 conda 初始化块缺少交互式判断VSCode 用 login shell 连接conda 初始化被执行可能导致卡住vscode-server 残留进程/缓存旧进程占用导致新连接无法初始化两个问题叠加导致一直转圈。解决方案修复 .bashrc给 conda 初始化加上交互式判断找到.bashrc中的 conda 初始化块用if [[ $- *i* ]]包裹# conda initialize if[[$-*i*]];then__conda_setup$(/home/yourname/miniconda3/bin/conda shell.bash hook2/dev/null)if[$?-eq0];theneval$__conda_setupelseif[-f/home/yourname/miniconda3/etc/profile.d/conda.sh];then./home/yourname/miniconda3/etc/profile.d/conda.shelseexportPATH/home/yourname/miniconda3/bin:$PATHfifiunset__conda_setupfi# conda initialize # 同样保护其他可能卡住的初始化if[[$-*i*]];then.$HOME/.local/bin/envfi效果XShell 正常登录交互式→ conda 正常激活(base)照常显示VSCode 连接非交互式→ 跳过 conda连接不再卡住清理 vscode-server 残留pkill-fvscode-serverrm-rf~/.vscode-server然后重启 VSCode 重新连接即可。附重新配置免密登录排查过程中删掉了免密登录配置连接成功后按以下步骤恢复。在本地电脑的 PowerShell 中执行# 如果本地没有密钥先生成ssh-keygen-t rsa-b 4096# 把公钥推到服务器替换端口和用户名type~/.ssh/id_rsa.pub|ssh-p 314 yournameyour.server.ipmkdir -p ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys输入一次密码后之后 VSCode 和 XShell 都无需再输密码。经验总结VSCode Remote SSH 连接卡住不报错大概率是服务器端 shell 初始化问题而不是网络或密码问题。VSCode 用的是 login shell和 XShell 的交互式 shell 执行路径不完全一样.bashrc里的return保护不一定能拦住 conda 初始化。遇到莫名其妙连不上先清理~/.vscode-server再试往往能解决一半问题。排查时用bash -li -c echo ok模拟 VSCode 的连接方式能快速定位是否是 shell 初始化的问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2499103.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!