Linux命令行是Linux系统的核心操作界面,掌握进入命令行的方法是使用Linux的基础,无论是图形界面下的终端工具,还是无图形界面的服务器环境,亦或是远程连接管理,都有多种方式进入Linux命令行,以下从不同场景详细说明进入Linux命令行的具体步骤和注意事项。
本地图形界面环境进入命令行
在安装了图形化桌面环境的Linux系统中(如Ubuntu的GNOME、CentOS的KDE、XFCE等),进入命令行主要通过终端模拟器实现,终端模拟器是图形界面下的命令行窗口,用户可在其中输入Linux命令。
通过应用程序菜单打开终端
- GNOME桌面(Ubuntu、Fedora等):点击屏幕左上角“应用程序”菜单,找到“工具”或“系统工具”文件夹,点击其中的“终端”(Terminal)或“GNOME终端”。
- KDE桌面(openSUSE、Kubuntu等):点击“应用程序”菜单,在“系统”或“工具”类别中找到“Konsole”终端。
- XFCE桌面(Xubuntu、Linux Mint XFCE等):通过“应用程序”菜单,在“附件”中点击“终端”(Terminal)。
使用快捷键快速打开终端
大多数Linux发行版默认设置了终端快捷键,无需鼠标操作即可快速打开:
- Ctrl+Alt+T:最通用的终端快捷键,适用于GNOME、KDE、XFCE等主流桌面环境。
- Ctrl+Alt+F2~F6:部分系统支持通过功能键切换到纯命令行界面(需提前配置,见下文“本地无图形界面进入”)。
- Super+T:在部分桌面环境(如Ubuntu的GNOME 3+)中,通过Super键(Windows键)打开应用程序搜索栏,输入“终端”后按回车即可启动。
通过文件管理器或右键菜单打开终端
- 在文件管理器中,点击地址栏输入
terminal
或gnome-terminal
,可直接在当前目录打开终端(需系统支持)。 - 部分桌面环境支持在文件夹空白处右键,选择“在此处打开终端”(Open Terminal Here),快捷键为Ctrl+Shift+右键(或根据自定义设置)。
常见终端模拟器对比
名称 | 适用环境 | 特点 | 默认快捷键 |
---|---|---|---|
GNOME Terminal | GNOME桌面 | 轻量、简洁,支持标签页和主题 | Ctrl+Alt+T |
Konsole | KDE桌面 | 功能丰富,支持分割窗口、会话管理 | 无默认 |
Xterm | 通用 | 最古老的终端模拟器,兼容性极强 | 无默认 |
Tilix | 通用(支持GNOME) | 支持垂直/水平分割、自定义布局 | 无默认 |
本地无图形界面环境进入命令行
对于服务器、嵌入式设备或最小化安装的Linux系统(如Ubuntu Server、CentOS Minimal),通常没有图形界面,开机后直接进入命令行;若原本有图形界面但需要禁用,可通过以下方式进入纯命令行模式。
开机引导时进入命令行
- 临时进入:开机时在GRUB引导界面(通常出现“GNU GRUB”字样),按
e
键编辑启动参数,找到以linux
或linux16
/linuxefi
开头的行,在行尾删除quiet splash
(若有),添加init=/bin/bash
或text
,按Ctrl+X启动,系统会以单用户模式进入命令行(无需登录,root权限)。 - 永久进入:修改GRUB配置文件,禁用图形界面,以CentOS 7+为例,执行以下命令:
sudo systemctl set-default multi-user.target # 设置默认目标为命令行模式 sudo reboot # 重启生效
若需恢复图形界面,执行
sudo systemctl set-default graphical.target
。
通过systemctl切换运行级别
Linux系统通过“目标”(target)管理运行状态,对应传统运行级别:
graphical.target
:图形界面(默认5级)multi-user.target
:命令行界面(默认3级)
若当前在图形界面,可通过命令切换到命令行:
sudo systemctl isolate multi-user.target # 临时切换,不修改默认配置
若需永久禁用图形界面,使用set-default
命令(见上文)。
最小化安装系统直接进入
在安装Linux时选择“最小化安装”(Minimal Install)或“服务器安装”(Server Install),安装完成后系统默认以命令行模式启动,无需额外配置。
- Ubuntu Server:安装完成后自动进入命令行登录界面。
- CentOS Minimal:开机后显示
login:
,输入用户名和密码即可进入。
远程连接进入Linux命令行
对于远程服务器或无显示设备的Linux主机,需通过网络连接进入命令行,最常用的是SSH(Secure Shell)协议。
使用SSH命令行客户端(Linux/macOS)
Linux和macOS系统内置SSH客户端,通过终端执行以下命令:
ssh username@hostname_or_ip -p port
username
:目标Linux系统的用户名(如root
、ubuntu
)。hostname_or_ip
:目标主机的主机名或IP地址(如168.1.100
、server.example.com
)。-p port
:SSH端口(默认为22,若目标服务器修改了端口需指定,如-p 2222
)。
首次连接时,系统提示The authenticity of host '...' can't be established
,输入yes
确认即可,随后输入用户密码,登录成功后进入远程命令行界面。
使用PuTTY(Windows系统)
Windows系统没有内置SSH客户端,需借助第三方工具,如PuTTY(免费开源)。
- 下载安装:从PuTTY官网(https://www.putty.org/)下载
putty.exe
,无需安装,直接运行。 - 配置连接:打开PuTTY,在“Session”页面输入“Host Name (or IP address)”(如
168.1.100
),端口默认22
,Connection type选择“SSH”,点击“Open”。 - 登录:弹出命令行窗口后,输入用户名和密码即可登录。
SSH密钥登录(免密登录)
为避免每次输入密码,可配置SSH密钥对实现免密登录:
- 生成密钥对(在本地执行):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按回车使用默认路径,可设置密码(可选),完成后生成
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。 - 上传公钥到远程主机:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
输入远程主机密码后,公钥会自动添加到远程主机的
~/.ssh/authorized_keys
文件中。 - 验证免密登录:再次执行
ssh username@hostname
,无需输入密码即可登录。
远程连接注意事项
- 防火墙配置:确保目标服务器的SSH端口(默认22)已开放,在CentOS中执行:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
- root登录限制:出于安全考虑,多数服务器禁止root直接通过SSH登录,需在远程主机的
/etc/ssh/sshd_config
中设置PermitRootLogin no
,并重启SSH服务(sudo systemctl restart sshd
)。
其他进入命令行的方式
虚拟机中的Linux命令行
若Linux运行在虚拟机(如VMware、VirtualBox)中,可通过以下方式进入命令行:
- 虚拟机控制台:在虚拟机管理器中直接点击终端窗口,相当于物理机的显示器和键盘。
- SSH连接:若虚拟机网络配置为桥接模式或NAT端口转发,可通过本机SSH连接虚拟机的IP地址。
容器中的命令行
使用Docker等容器技术时,可通过docker exec
命令进入容器的命令行:
docker exec -it container_name /bin/bash # 进入容器并启动bash
-it
:以交互模式运行,分配伪终端。container_name
:容器名称或ID。/bin/bash
:容器内的默认shell(若容器未安装bash,可尝试/bin/sh
)。
相关问答FAQs
Q1:为什么在图形界面打开终端后输入命令提示“permission denied”?
A:提示“permission denied”通常是因为当前用户没有执行该命令的权限,Linux中普通用户默认无法执行需要root权限的命令(如systemctl
、apt
等),解决方案:
- 在命令前加
sudo
,以管理员身份执行(需输入当前用户密码),例如sudo apt update
。 - 若需长期使用root权限,可执行
sudo su -
切换到root用户(需设置root密码,Ubuntu默认root密码为空,首次需通过sudo passwd root
设置)。
Q2:SSH连接时提示“Connection timed out”是什么原因?如何解决?
A:“Connection timed out”表示本地客户端无法与目标服务器建立连接,常见原因及解决方法:
- 目标服务器未启动SSH服务:在服务器上执行
sudo systemctl status sshd
(CentOS)或sudo systemctl status ssh
(Ubuntu),确认服务是否运行;若未运行,执行sudo systemctl start sshd
或sudo systemctl start ssh
。 - 防火墙阻止SSH端口:检查服务器防火墙是否允许SSH流量(如CentOS的firewalld、Ubuntu的ufw),开放SSH端口(默认22)。
- 网络问题:确认本地与服务器网络连通(执行
ping 目标IP
),检查服务器IP地址或域名是否正确,以及SSH端口是否被修改(需通过-p
指定端口)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20278.html