本章,将进行 Linux 基础运维学习及相关知识的讲解,帮助各位将要从事运维的朋友,如何快速学习 Linux 运维,作者首先是介绍了Linux服务器远程连接配置,其次介绍在企业运维中常用的ssh连接工具,并交互登录到服务器终端,之后介绍了不同的Shell终端类型,然后是Linux命令基础格式、类型、帮助、别名、补齐、历史,最后作者以自身学习实践经验进行总结归纳,以运维实践的方式讲解常见的运维命令,能够让初学者快速上手及加深印象,希望大家多多支持
远程连接配置登录
通常Linux 系统安装完毕后,是已经启动安全外壳协议(Secure Shell,简称SSH)是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议。
说到这里,工欲善其事必先利其器,在企业运维中运维人员会用那些 ssh 客户端工具,这里对常用的几款 ssh 工具(MobaXterm
、XShell
、Putty
)进行简单介绍。
连接工具
MobaXterm
MobaXterm 是远程计算的终极工具箱,在 Windows 应用程序中,它提供了大量的功能,这些功能是为程序员、网站管理员、IT管理员以及几乎所有需要以更简单的方式处理远程工作的用户量身定制的,目前有 Home Edition
、Professional Edition
两种发行方法,其中前者可以免费使用,但是存在于一些资源的限制,不过基础功能是已经够用了, 作者推荐大家使用。
MobaXterm 功能:
- MobaXterm 选项卡式终端允许运行所需的 Unix 命令,例如
ls、cd、grep、awk、tail、cut、sed、wget、rsync、telnet、ssh、rlogin、rsh
等 Unix 命令工具 - MobaXterm 允许您启动远程会话,可以创建
SSH、Telnet、Rlogin、RDP、VNC、XDMCP、FTP、SFTP
或串行(Serial
) 会话,并且支持图形化 SFTP 浏览器,便于运维管理人员直接从本机上传文件到远程服务器。 - MobaXterm 支持终端中的语法高亮显示,宏支持以及使用密码来保护保存在此工具上的服务器认证密码。
- MobaXterm 支持会话中使用 X11 服务器(
SSH、TELNET 或 RLOGIN/RSH 会话
)、X 服务器(基于 X.org 的嵌入式
),本地 Windows PC 上显示您的远程应用程序。 - MobaXterm 支持SSH 网关(又名“跳转主机”)、SSH 隧道(端口转发),在 ssh、telnet、RDP、VNC 会话中,可以设置 SSH 网关连接防火墙后面的某些服务器。
官网: https://mobaxterm.mobatek.net
XShell
描述:XShell 7 是一款功能强大且易于使用的终端仿真软件,它主要用于远程连接和管理远程服务器、设备或虚拟机,适用于系统管理员、开发人员和网络工程师的优秀工具,能够帮助他们高效地管理和操作远程主机和设备,目前商业版本,以及家庭和学校用户的免费许可证。
XShell 功能:
- 多标签界面:XShell 7 提供了多标签界面,可以同时管理多个远程连接,便于用户在不同主机之间进行切换和操作。
- 会话管理:用户可以保存并管理多个会话,方便快速连接到常用的主机或设备。
- 多种协议:XShell 7 支持多种协议,包括 SSH、TELNET、RLOGIN 和 SFTP,使用户可以灵活地连接到各种类型的远程主机。
- 强大的脚本支持:XShell 7 支持使用脚本自动化任务,用户可以编写脚本来执行批量操作或自定义功能。
- 安全性:XShell 7 提供了多种安全功能,如公钥/私钥认证、加密传输等,确保数据在传输过程中的安全性。
官网:https://www.xshell.com/zh/xshell/
Putty
描述:Putty 是一个开源的免费的 SSH 和 Telnet 以及串行(Serial)阜连线客户端程序,用于远程连接和管理计算机系统,它是最常用的远程控制软件之一,特别适用于在 Windows 操作系统上进行远程服务器管理,
Putty 功能:
- 支持多种协议:Putty 支持 SSH、Telnet、Rlogin、Raw 等多种远程连接协议,使用户能够连接到各种类型的远程主机。
- 轻量级:Putty 是一个小巧的程序,下载和安装非常快速,并且不需要大量的系统资源,适合在各种计算机上运行。
- 功能全面:尽管 Putty 的界面相对简单,但它提供了丰富的功能,包括会话管理、公钥/私钥认证、端口转发等,满足了大部分基本的远程连接需求。
- 免费开源:Putty 是免费开源软件,用户可以自由获取、使用和修改它,同时也能在许可下重新发布。
- 跨平台:虽然最初是为 Windows 设计的,但由于其开源特性,后来也有其他操作系统的版本,比如 Linux 和 macOS。
官网地址:https://www.putty.be/
除了上述远程连接工具外,其实还有许多其他ssh工具,此处就不在一一累述了,毕竟工具用得得手就行。
连接登录
此时,我们只需要在完成网络配置后,便可使用 ssh 终端工具进行连接使用,但是值得注意的是,出于安全的考虑 root 用户默认是不能通过 ssh 远程登录的,若需使用 root 登录需要在 sshd (守护进程) 配置文件启用 root 登录:
例如,使用 vi 命令编辑 /etc/ssh/sshd_config
配置文件,且修改对应字段参数如下,之后(按键 Ese、输入 :wq
)保存文件即可。
# 服务默认监听端口
Port 22
# 启用允许 root 使用密码登录(主要)
PermitRootLogin yes
之后,执行 systemctl restart sshd
重启sshd服务,然后使用 ifconfig
或者 ip addr
命令查看到主机 IP 地址。
最后使用 MobaXterm ssh 客户端工具连接,输入主机地址以及缺省的ssh端口进行连接到服务器。
输入 root 账户密码便可登录到服务器, 温馨提示线上通常情况不会启用 root 远程登录,此处为了便于大家学习作者便使用高权限用户为例进行讲解,以实例命令进行讲解。
交互接口
描述:在用户登录到服务器启动终端后,操作系统会在终端设备中附加一个交互式应用程序,它可以是 GUI 可视化操作界面,也可以是 CLI 命令行接口界面,不过通常情况下作为Linux运维人员,常常会在 CLI 模式下进行服务器主机的管理配置,所以后续讲解主要已 CLI 模式为例。
- GUI(
Graphic Use Interface X Protocol
) :例如,Gnome (以 C 编写的图形库 GTK)、KDE (C++ 编写的图形库)、XFCE(轻量级的桌面) - CLI(
Command Line Interface
):Shell 程序
在《服务器操作系统基本篇章》中我们讲解过,Shell 是 Kernel 的壳,是 Linux 系统的用户界面,为用户与内核提供交互的桥梁,它接收用户输入的命令并将其送入到内核中进行执行。
实际上 Shell 也被称为 Linux 的命令解释器,它是一种高级程序设计语言(解释型),提供了变量、函数、条件判断、循环等基础编程语言的功能,并且由于 Shell 本身是个程序,所以它可以被任何用户自己开发的各种 Shell 所替代。
在 Linux 中,常见的 Shell 包括以下几种:
- Bourne Shell(sh):
- Bourne Shell 是 Unix 系统中最早的 Shell,通常位于
/bin/sh
,大多数 Unix、Linux 发行版都有。 - 它提供了基本的命令解释和控制结构,是其他 Shell 的基础。
- Bourne Shell 是 Unix 系统中最早的 Shell,通常位于
- Bourne-Again Shell(bash):
- Bourne-Again Shell 是 Bourne Shell 的增强版本 (
兼容
),也是大多数 Linux 发行版默认的 Shell。 - 它兼容 Bourne Shell,并添加了许多新特性,如命令历史记录、自动补全等。
- Bourne-Again Shell 是 Bourne Shell 的增强版本 (
- C Shell(csh):
- C Shell 是类似于 C 语言语法风格的 Shell,提供了 C 风格的控制结构和语法。
- 它具有与 Bourne Shell 不同的语法和特性,适合习惯 C 风格语法的用户使用。
- Korn Shell(ksh):
- Korn Shell 结合了 C Shell 和 Bourne Shell 的优点,提供了丰富的功能和灵活的语法,是 IBM AIX 默认的 Shell。
- 它是商业 Unix 系统中常见的 Shell 类型,也有免费开源的版本可供使用。
- Z Shell(zsh):
- Z Shell 是一个功能强大的 Shell,提供了丰富的命令补全、主题定制等功能,是苹果 MacOS 默认的 Shell。
- 它在用户友好性和功能性上有很多改进,逐渐成为一些用户的首选 Shell。
除了这些常见的 Shell 类型外,还有其他一些少见的 Shell 类型,例如 tcsh
、dash
,每种 Shell 都有其特定的语法和功能特性,用户可以根据自己的需求和偏好来选择合适的 Shell 类型。
实例,显示当前使用的Shell以及切换为其他Shell。
# 显示当前终端 Shell
$ echo $SHELL
/bin/bash
# 显示当前系统可用 Shell
$ cat /etc/shells
# 或者
$ chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
# 切换当前用户终端登录 Shell (临时 & 永久)
$ /bin/sh
sh-5.1# whoami
root
$ chsh -s /bin/sh
Changing shell for root.
Shell changed.
$ exit
温馨提示:切换默认 Shell 后,需要退出当前会话并重新登录才能使更改生效,重新登录后,你将会看到默认 Shell 已经切换为你所指定的 Shell。
终端类型
描述:在 Linux 中终端是一种字符型设备,所以他有多种终端类型,下来跟随作者来简单了解一下几种常见的终端类型。
- 控制台终端(Console Terminal):
/dev/console
指通过物理主机或虚拟机本地登录主机方式的控制台终端是和操作系统交互的设备,系统将一些信息直接输出到控制台上。 - 虚拟终端(Virtual Terminal):
/dev/tty[1~64]
或者/dev/tty[1~64]
(Teletypewriters
,原指的是电传打字机)是 Linux 提供的一种文本界面,可以通过组合键Ctrl + Alt + F1
到F6
在不同的虚拟终端之间切换,每个虚拟终端都可以独立登录用户,方便在一个物理终端上同时运行多个命令行会话。 - 串口终端(Serial Terminal):
/dev/ttyS*
或者/dev/tts/*
是通过串口(COM 端口)与计算机或设备连接的终端,通常用于嵌入式系统、物联网设备等,串口终端可以通过串口通信协议(如 RS-232)进行数据交换和控制。 - 远程终端(Remote Terminal):
/dev/pts/*
别称伪终端(Pseudo Terminal
),远程终端是通过网络连接到远程主机上的终端,可以使用 SSH(Secure Shell)等协议进行远程登录和操作,通过远程终端,用户可以在本地计算机上操作远程服务器,进行文件传输、远程管理等操作。 - 图形终端(Graphical Terminal):StartX,XWindows 是指在图形界面下打开的终端仿真器,如 GNOME Terminal、Konsole 等,图形终端提供了更丰富的用户界面和功能,支持图形化的操作和多标签页功能。