进入Linux虚拟机命令行是日常管理和运维的基础操作,根据虚拟机状态(如是否启动、图形界面是否可用、是否支持网络等)和访问方式(本地直接操作或远程连接),可采用多种方法实现,以下从常见场景出发,分步骤详细说明具体操作流程及注意事项。
本地直接访问:通过虚拟机控制台进入命令行
若虚拟机已在本地主机上运行(通过VMware、VirtualBox等虚拟化软件打开),可直接通过虚拟机的控制台窗口进入命令行,这是最基础且无需额外配置的方式。
VMware虚拟机
- 操作步骤:
(1)打开VMware Workstation/Fusion,在虚拟机列表中选择目标Linux虚拟机,点击“打开电源”启动系统。
(2)虚拟机启动后,会自动进入图形登录界面(若已配置图形用户),此时按下Ctrl+Alt+F2
~Ctrl+Alt+F6
中的任意组合键(通常F2为命令行终端,F3-F6为备用终端),即可切换到纯文本模式的命令行登录界面(显示“Login:”提示符)。
(3)输入用户名和密码(首次登录通常使用root或创建的管理员用户),登录成功后即可进入命令行环境。 - 注意事项:
- 若虚拟机未安装图形界面(如最小化安装的CentOS/Ubuntu),启动后默认直接进入命令行登录界面,无需切换。
- 部分VMware版本可能需要点击虚拟机窗口的“最大化”或“捕获键盘”按钮,确保按键能被虚拟机识别。
VirtualBox虚拟机
- 操作步骤:
(1)打开VirtualBox,选择目标Linux虚拟机,点击“启动”按钮。
(2)启动后,在虚拟机窗口中直接按下Ctrl+Alt+F2
(或Ctrl+Alt+Fn
系列组合键),切换到命令行终端。
(3)输入用户名和密码登录,进入命令行。 - 注意事项:
- VirtualBox默认支持“键鼠捕获”,当虚拟机窗口激活时,键鼠操作会自动定向到虚拟机;若未捕获,可点击虚拟机窗口右上角的“设备”→“键鼠捕获”手动启用。
- 部分Linux发行版(如Ubuntu Desktop)可能默认使用
Ctrl+Alt+F1
作为图形终端,F2
~F6
为命令行终端,具体可通过登录界面提示确认。
远程访问:通过SSH连接虚拟机命令行
若虚拟机运行在远程服务器或需要通过网络管理(如主机与虚拟机不在同一物理环境),可通过SSH(Secure Shell)协议连接虚拟机的命令行,这是最常用的远程管理方式。
前置条件
- 虚拟机已安装并开启SSH服务(大多数Linux发行版默认安装,可通过
systemctl status sshd
或systemctl status ssh
检查服务状态)。 - 虚拟机与主机处于同一局域网(或虚拟机配置了端口映射和公网访问),且主机能ping通虚拟机的IP地址(通过
ip addr
或ifconfig
查看虚拟机IP)。 - 主机需安装SSH客户端(Linux/macOS自带SSH命令,Windows可通过OpenSSH、PuTTY等工具连接)。
操作步骤(以Linux/macOS主机为例)
- 步骤1:获取虚拟机IP地址
在虚拟机命令行(或通过本地控制台临时进入)输入ip addr
,找到以太网或无线网卡(如ens33
、eth0
)对应的inet
地址,例如168.1.100
。 - 步骤2:使用SSH连接
在主机终端中输入ssh 用户名@虚拟机IP
,例如ssh root@192.168.1.100
(首次连接会提示“Are you sure you want to continue connecting (yes/no)?”,输入yes
确认)。 - 步骤3:输入密码登录
输入虚拟机用户的密码(输入时不会显示字符),登录成功后即可进入远程命令行环境。 - 步骤4(可选):配置SSH密钥免密登录
为避免每次输入密码,可在主机生成SSH密钥并传输到虚拟机:# 主机生成密钥(默认已生成则跳过) ssh-keygen -t rsa -b 4096 # 将公钥传输到虚拟机 ssh-copy-id 用户名@虚拟机IP
Windows主机使用PuTTY连接
- 下载并打开PuTTY,在“Host Name (or IP address)”栏输入虚拟机IP,端口默认为22。
- 在“Connection”→“Data”的“Auto-login username”栏输入用户名,点击“Open”,在弹出的终端中输入密码登录。
启动时进入命令行模式:修改GRUB启动参数
若需要让虚拟机默认启动进入命令行(或图形界面损坏时强制进入),可通过修改GRUB引导参数实现。
操作步骤
- 步骤1:重启虚拟机并进入GRUB菜单
重启虚拟机时,长按Shift
键(或Esc
键,具体取决于发行版),直到出现GRUB引导菜单(若未显示,可尝试在启动时按Esc
或Space
键强制显示)。 - 步骤2:编辑启动参数
使用方向键选择默认的Linux内核选项(通常为第一个),按下e
键进入编辑模式。 - 步骤3:修改内核参数
找到以linux
或linux16
/linuxefi
开头的行(包含ro quiet splash
等参数),在行尾删除quiet splash
,添加init=/bin/bash
(单用户模式,root无需密码)或3
(命令行模式,需登录)或5
(图形模式)。原参数:linux /boot/vmlinuz-5.15.0-88-generic root=UUID=xxx ro quiet splash 修改后:linux /boot/vmlinuz-5.15.0-88-generic root=UUID=xxx ro 3
- 步骤4:启动并进入命令行
按下Ctrl+X
或F10
,系统会以修改后的参数启动,进入命令行模式(单用户模式直接root登录,命令行模式需输入用户名密码)。
注意事项
- 单用户模式(
init=/bin/bash
)直接以root权限进入,适用于系统修复,但需谨慎操作,避免误删文件。 - 修改GRUB参数后,若需恢复默认启动,可编辑
/etc/default/grub
文件,将GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
恢复原样,并运行sudo update-grub
更新GRUB配置。
救援模式:系统故障时进入命令行
若虚拟系统因文件系统错误、密码遗忘等故障无法正常启动,可通过救援模式进入命令行进行修复。
操作步骤(以GRUB救援模式为例)
- 步骤1:进入GRUB菜单并选择救援模式
重启虚拟机,进入GRUB菜单后,选择“Advanced options for Ubuntu”或“Recovery mode”(具体名称因发行版而异),按下e
键编辑。 - 步骤2:添加内核参数
找到linux
开头的行,在行尾添加systemd.unit=rescue.target
(systemd系统)或init=/bin/bash
(旧版系统)。 - 步骤3:启动并修复系统
按下Ctrl+X
启动,进入救援模式后,可挂载文件系统(mount -o remount,rw /
)、重置密码(passwd username
)、修复依赖包(dpkg --configure -a
)等。 - 步骤4:重启系统
修复完成后,输入reboot
重启虚拟机,正常进入系统。
不同方法对比总结
为方便选择,以下通过表格总结上述方法的适用场景及优缺点:
方法名称 | 适用场景 | 操作复杂度 | 是否需要网络支持 | 优点 | 缺点 |
---|---|---|---|---|---|
本地控制台访问 | 虚拟机在本地运行,需直接操作 | 低 | 否 | 无需配置,直接访问 | 需物理机操作,无法远程管理 |
SSH远程连接 | 远程管理,或虚拟机无图形界面 | 中 | 是 | 支持远程,可同时管理多台 | 需配置网络和SSH服务 |
GRUB修改启动参数 | 需默认进入命令行,或图形界面故障 | 中 | 否 | 可控制启动模式,适合修复 | 需手动修改GRUB,操作不当可能影响启动 |
救援模式 | 系统严重故障(如文件系统损坏) | 高 | 否 | 可修复系统底层问题 | 操作风险较高,需一定Linux基础 |
相关问答FAQs
问题1:虚拟机启动后黑屏,无法进入图形界面,如何进入命令行修复?
解答:黑屏通常由图形服务配置错误或驱动问题导致,可尝试以下方法:
- 强制切换终端:在黑屏界面按下
Ctrl+Alt+F2
,尝试进入命令行终端(部分系统可能需要F3
~F6
)。 - 若无法切换,重启虚拟机,进入GRUB菜单,选择对应内核,编辑启动参数,将
quiet splash
改为3
(命令行模式),启动后通过systemctl status gdm
(GNOME)或systemctl status lightdm
(KDE/XFCE)检查图形服务状态,若失败则运行systemctl set-default multi-user.target
设置默认进入命令行模式。
问题2:使用SSH连接虚拟机时提示“Connection refused”,如何排查?
解答:“Connection refused”表示目标端口(默认22)未开放或服务未启动,可按以下步骤排查:
- 检查SSH服务状态:在虚拟机中运行
systemctl status sshd
或systemctl status ssh
,若未启动则执行systemctl start sshd
并设置为开机自启(systemctl enable sshd
)。 - 检查防火墙规则:运行
sudo ufw status
(Ubuntu)或firewall-cmd --list-all
(CentOS),确认22端口是否开放,若未开放则执行sudo ufw allow 22
或firewall-cmd --add-port=22/tcp --permanent
。 - 检查虚拟机IP和网络:确认虚拟机IP地址正确(
ip addr
),主机能ping通虚拟机,且虚拟机网络模式为NAT或桥接(确保与主机在同一网段)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15590.html