VSCode远程连接AlmaLinux虚拟机问题总结

一、问题概述

今天在通过VSCode Remote-SSH插件连接AlmaLinux虚拟机(VirtualBox)时,主要遇到以下三个阶段的问题:

问题阶段 核心问题 影响 解决状态
第一阶段 SSH认证失败 无法建立连接 ✅ 已解决
第二阶段 VS Code Server安装失败 连接后无法初始化 ✅ 已解决
第三阶段 系统工具缺失 影响后续操作 ✅ 已解决

二、详细问题及解决方案

问题1:SSH认证失败(第一阶段)

现象

  • VSCode连接时提示"Permission denied (publickey,gssapi-keyex,gssapi-with-mic)"

  • 无法通过密码认证登录

根本原因

AlmaLinux最小化安装默认SSH配置限制:

  • PermitRootLogin设置为 prohibit-password(禁止密码登录)

  • 未启用密码认证

解决方案

复制代码
# 修改SSH配置
vim /etc/ssh/sshd_config

# 修改以下配置项:
PermitRootLogin yes
PasswordAuthentication yes

# 重启SSH服务
systemctl restart sshd

验证方法

  • 在Windows终端执行:ssh root@localhost -p 9091

  • 成功输入密码登录即解决


问题2:VS Code Server安装失败(第二阶段)

现象

  • SSH连接成功后,VSCode自动安装VS Code Server时失败

  • 错误信息:"Failed to install the VS Code Server"

  • 日志显示:"tar: command not found"

根本原因

AlmaLinux最小化安装缺少以下关键工具:

  • tar命令(用于解压VS Code Server压缩包)

  • 其他解压相关工具

解决方案

复制代码
# 安装必要工具
dnf install -y tar gzip wget curl

# 验证安装
tar --version  # 应显示版本信息

补充说明

  • 网络测试确认正常(ping baidu.com、8.8.8.8均通)

  • 问题并非网络导致,而是系统工具缺失

  • 安装tar后,VSCode自动重试即可成功


问题3:dnf进程锁定(第三阶段)

现象

  • 执行dnf install时提示"Waiting for process with pid XXXX to finish"

  • 命令卡住或提示进程被锁定

根本原因

  • 之前某个dnf进程异常中断,导致锁文件残留

  • 系统检测到已有dnf实例在运行

解决方案

复制代码
# 结束卡住的dnf进程
pkill dnf
pkill python3

# 删除锁文件
rm -f /var/run/dnf.pid
rm -f /var/lib/dnf/rpmdb_lock.pid

# 清理缓存
dnf clean all

# 重新执行安装
dnf install -y unzip  # 或其他需要的包

三、关键经验总结

1. 最小化安装的局限性

AlmaLinux最小化安装(Minimal Install)默认只包含最基础的软件包,缺少:

  • 常用工具(tar、unzip、wget等)

  • 开发工具链

  • 网络诊断工具

建议:生产环境建议选择"Server with GUI"或"Server"安装类型,或手动安装必要工具包。

2. SSH安全配置与便利性

默认安全配置限制了密码登录,虽然安全但影响开发便利性。开发环境可适当放宽限制,生产环境需谨慎。

3. 问题排查顺序

正确的排查流程:

  1. 网络连通性:ping测试(外网、DNS)

  2. 服务状态:检查SSH服务、端口监听

  3. 配置验证:查看配置文件是否正确

  4. 工具检查:确认系统命令是否存在

  5. 权限验证:文件权限、用户权限

4. 日志的重要性

VSCode Remote-SSH插件提供了详细日志(通过"Remote-SSH: Show Log"命令),是定位问题的关键依据。


四、预防措施

环境准备清单

下次部署类似环境时,建议提前执行:

复制代码
# 系统安装后立即执行
dnf update -y
dnf install -y tar gzip wget curl vim net-tools
dnf install -y epel-release  # 可选,扩展软件源

# 配置SSH(开发环境)
sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl restart sshd

自动化脚本

可编写初始化脚本,避免重复问题:

复制代码
#!/bin/bash
# init_alma.sh - AlmaLinux初始化脚本

echo "安装基础工具..."
dnf install -y tar gzip wget curl vim unzip

echo "配置SSH..."
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl restart sshd

echo "初始化完成"

五、最终结果

经过上述问题解决,当前环境状态:

  • ✅ AlmaLinux系统正常运行

  • ✅ SSH远程连接稳定

  • ✅ VSCode Remote-SSH功能正常

  • ✅ 系统基础工具(tar、unzip等)已安装

  • ✅ 具备后续LiveKit部署的基础环境


相关推荐
VidDown6 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
摇滚侠6 天前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
霸道流氓气质6 天前
Trae IDE 新手入门指南
ide
VidDown6 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频
夜猫逐梦6 天前
【UE基础】03.蓝图与编辑器工作流
编辑器·ue·蓝图·ue编辑器
VidDown6 天前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
爱就是恒久忍耐6 天前
VSCode里如何比较2个branch
ide·vscode·编辑器
意法半导体STM326 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
bloglin999996 天前
vscode中可视化的合并分支,在“合并编辑器中解析”中“与基线进行比较”是什么意思
ide·vscode·编辑器
终将老去的穷苦程序员6 天前
IntelliJ IDEA 的安装教程
java·ide·intellij-idea