一、问题概述
今天在通过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. 问题排查顺序
正确的排查流程:
-
网络连通性:ping测试(外网、DNS)
-
服务状态:检查SSH服务、端口监听
-
配置验证:查看配置文件是否正确
-
工具检查:确认系统命令是否存在
-
权限验证:文件权限、用户权限
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部署的基础环境