VSCode Remote SSH扩展套接字连接失败问题求助
你遇到的问题是bash终端能正常通过ssh和sftp连接远程服务器,但VSCode Remote SSH扩展在建立连接时,出现Failed to set up socket for dynamic port forward to remote port XXXX: Socket closed报错。结合日志和你已做的尝试,以下是具体排查和解决步骤:
排查步骤
确认远程VSCode Server端口监听状态
SSH登录服务器后,执行以下命令查看code-server进程的监听情况:ss -tulpn | grep code-server确认输出中存在
127.0.0.1:37949(日志中显示的监听端口)。接着在服务器本地测试端口连通性:curl http://127.0.0.1:37949如果返回
Connection refused,说明code-server未正常监听该端口,需要重启服务;如果有响应(即使是错误页面),则端口本身是通的。检查远程防火墙规则
部分服务器的防火墙(如ufw、iptables)可能限制了回环接口(lo)的连接。临时关闭防火墙测试:# 若使用ufw ufw disable # 若使用iptables iptables -F关闭后重试VSCode连接,若成功,需调整防火墙规则允许回环接口的所有端口访问,或者单独放行VSCode Server使用的端口范围。
禁用动态转发,改用静态本地转发
在VSCode设置中搜索remote.SSH.enableDynamicForwarding,将其设置为false。然后在本地~/.ssh/config文件中添加静态转发规则:Host 89.117.36.25 User root LocalForward 127.0.0.1:37949 127.0.0.1:37949保存配置后重启VSCode,重新发起连接。
清理远程VSCode Server残留进程与锁文件
日志显示之前存在残留的VSCode Server进程,可能导致端口冲突或连接异常。SSH登录服务器后执行:# 杀掉所有code-server进程 pkill -f code-server # 删除锁文件 rm -rf /root/.vscode-server/bin/92da9481c0904c6adfe372c12da3b7748d74bdcb/vscode-remote-lock.root.*完成后重新尝试VSCode连接。
关闭本地代理或VPN
本地运行的代理工具、VPN可能会干扰SSH的动态转发通道。临时关闭所有代理和VPN服务,再重试VSCode连接。临时修改VSCode Server监听地址
若以上方法无效,可尝试让VSCode Server监听所有网卡(仅用于测试,存在安全风险):
SSH登录服务器后,手动启动code-server:/root/.vscode-server/bin/92da9481c0904c6adfe372c12da3b7748d74bdcb/bin/code-server --start-server --host=0.0.0.0 --accept-server-license-terms --enable-remote-auto-shutdown --port=37949然后在VSCode中尝试连接,若成功,说明是回环接口的访问限制问题,后续需调整服务器配置而非长期使用0.0.0.0监听。
内容的提问来源于stack exchange,提问作者Md Jahid Khan Limon

