2018-05-09 课堂笔记
目录
一、Linux简介
二、虚拟机安装 & 快照 & 克隆
三、网络配置
四、重启与关机
五、主机名配置
六、单用户模式
七、grub加密
八、救援模式
九、远程登录
十、使用秘钥远程登录
一、 Linxu简介
1. Linux家谱

ps. 分享一个 hin 全的Linux家谱图: Linux家谱
2. RedHat 发行版分类
- Fedora:社区版。新功能的测试区。
- RHEL(Red Hat Enterprise Linux):商业版。经Fedora测试良好的功能会加入该发行版。该发行版多为企业所用,因为RedHat不光提供操作系统,还包含相应的服务,如:版本升级、故障维修、漏洞修复等。
- CentOS:RHEL克隆版。因RHEL的绝大多数软件包遵循GPL协议,因此放出源码。而CentOS正是由这些开放源码的软件包构成,所以相当于RHEL的一个克隆版。但是CentOS并非商业版,因此其不提供相应服务,漏洞修复也滞后于RHEL。
二、虚拟机安装 & 快照 & 克隆
1. 实验环境简介
本地环境
OS:Windows
虚拟化软件:VMware Workstation
虚机环境
OS:CentOS 7
HD:30G
RAM:1GB以上
CPU:1颗单核
2. 虚机网络简介
NAT
虚拟网卡:VMnet8
效果:功能类似家庭路由器:WAN口接本地,LAN口接虚机,同时做NAT,访问别的网络时其实是以WAN口的IP作为源IP。
桥接
虚拟网卡:VMnet0
效果:功能等同交换机:虚机与主机在同一个网段,相当于两台同局域网下的主机。
仅主机
虚拟网卡:VMnet1
效果:虚机仅能与主机通信。
3. 虚拟机硬件配置
——安装虚机已经数不清次数了,这里就简单用截图记录了
a. 新建虚拟机,选择稍后安装操作系统

b. 操作系统类型,选择 Linux
CentOS 7 64位

c. 设置主机名,以及虚拟机的文件在本地存放的位置

d. 分配30GB的硬盘空间,并默认选择 将虚拟磁盘拆分成多个文件

e. 配置虚机硬件

f. 按照实验环境,选择RAM、CPU、网络;CD Rom的配置要 启动时链接
,并在这里指定安装系统用的ISO文件

g. 设置完成

4. CentOS 7 安装
a. 启动虚机,选择 Install CentOS 7

b. 选择语言,如果英文水平还可以,推荐使用英文,因为不会出现字符编码方面的问题。但实验环境我们选择简体中文。

c. 软件配置与系统分区

d. 软件配置推荐选择 最小安装
,该模式较为纯净,有什么需要安装的软件可以自行安装。但可能需要解决较多的依赖性问题。

e. 配置分区:
/boot 200M
swap 2GB(内存的2倍)
/ 其余的都给根目录
swap 大小的选择
一般为 RAM 的2倍,但上限为8GB 即可





f. 开始安装

g. 设置 root 用户的密码

h. 完成

5. 快照
“快照”,一种快速保存虚机某一时刻状态的技术。当系统出现问题时,能够快速还原至某一个拍摄快照的状态。
a. 右键点击需要拍摄快照的VM,选择快照,选择拍摄快照

b. 填写快照的名称 及 描述,并点击拍摄快照

c. 完成后,可查看当前已拥有那些快照

d. 更多对于快照的管理,可以进快照管理器中查看

6. 克隆
“克隆”,是复制一个一模一样的VM,可直接对VM进行克隆,也可以对快照进行克隆;
由于克隆后,新的VM与原VM完全相同,所以需要修改必要的配置(如IP、hostname等),以防止同时运行这两台VM时引起冲突。
前提:VM必须处于关机状态,否则将提示无法进行克隆
a. 右键点击需要拍摄快照的VM,选择管理,选择克隆

b. 进入克隆向导,点击下一步

c. 可直接通过VM克隆,也可通过已有快照克隆

d. 选择 创建链接克隆

e. 编辑克隆出来的VM的相关信息

f. 完成克隆

g. 后续操作
由于新的VM与原VM一模一样,同时开启时部分配置可能导致冲突,所以需要提前更改,更改内容包括但不限于以下内容:
- 更改IP地址
- 删除网卡配置文件中的UUID行
- 修改主机名
三、网络配置
1. 查看网卡信息
- 命令1:
ip addr
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 #能够看到还回口的相关信息
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:53:5c:6a brd ff:ff:ff:ff:ff:ff #能够看到 MAC 地址
inet 172.16.166.254/24 brd 172.16.166.255 scope global eno16777736 #能够看到 IP 地址
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe53:5c6a/64 scope link
valid_lft forever preferred_lft forever
- 命令2:
ifconfig #该命令包含于 net-tools 软件包中
[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.166.254 netmask 255.255.255.0 broadcast 172.16.166.255
inet6 fe80::20c:29ff:fe53:5c6a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:53:5c:6a txqueuelen 1000 (Ethernet)
RX packets 192 bytes 19043 (18.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 141 bytes 18501 (18.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2. 查看路由信息
- 命令:
route -n #n参数表示使用纯数字来显示 IP 地址
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.166.2 0.0.0.0 UG 1024 0 0 eno16777736
172.16.166.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736
3. 通过 DHCP 服务获取 IP
- 命令:
dhclient
ps. 无法重复运行dhclient
,在第二次运行前需要使用dhclient -r
来释放。
4. 直接修改网卡的配置文件(推荐)
配置文件:/etc/sysconfig/network-scripts/ifcfg-###
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
HWADDR=00:0C:29:53:5C:6A
TYPE=Ethernet
BOOTPROTO=static #分 static 与 dhcp 两种
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=c56b15e6-2ca7-4c8f-886e-dc80dabbf8d7
ONBOOT=yes #是否开机启动
IPADDR=172.16.166.254 #IP 地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=172.16.166.2 #网关
DNS1=223.5.5.5 #DNS 服务器
5. 重启网络服务
- 命令:
systemctl restart network.service
老版本命令:/etc/init.d/network restart
或 service network restart
四、重启与关机
重启
reboot
、init 6
、shutdown -r now
关机
poweroff
、init 0
、shutdown -h now
五、主机名配置
1. 查看主机名
命令:hostname
[root@localhost ~]# hostname
localhost.localdomain
2. 修改主机名
命令:hostnamectl set-hostname choco-02
配置文件:/etc/hostname
[root@choco-02 ~]# hostnamectl set-hostname choco-02
[root@choco-02 ~]# cat /etc/hostname #当前会话里提示符并未改变
choco-02 #但是hostname配置文件已经改变
[root@choco-02 ~]# hostname
choco-02 #hostname确实已经改变
[root@choco-02 ~]#
重新连接会话后,提示符得到了更新。

六、单用户模式
1. Linux 的6种 runlevel
CentOS 6
- 0:关机
- 1:单用户(无需认证)
- 2:多用户模式,命令行
- 3:多用户模式,命令行
- 4:多用户模式,命令行
- 5:多用户模式,图形
- 6:重启
CentOS 7
可用ll /usr/lib/systemd/system/runlevel*target
查看
- poweroff.target
- rescue.target
- multi-user.target
- multi-user.target
- multi-user.target
- graphical.target
- reboot.target
ps. 其实对应关系一目了然,主要是CentOS 7为了照顾从CentOS 6刚来的老用户。CentOS 6 使用 initd 启动,该种方式为串行启动,速度较慢;CentOS 7 使用 systemd 启动,该方式为并行启动,速度较快
2. 进入单用户模式修改 root 密码
a. 重启
b. 进入 grub
grub 是关系到 Linux 启动的程序,编辑 grub 可进入不同的环境
重启后,按上下箭头,选中 Linux 系统,并按'e'进入 grub 编辑界面

c. 修改 grub 内容
找到以'linux16'开头的行,找到该行中的 ro
(Read Only),改为rw
(Read & Write),并在rw
后添加 init=/sysroot/bin/sh

修改为

d. 重新加载系统
按照提示,按 Ctrl+x
开始
e. 切换至原系统的相关环境
进入后,发现并不是自己使用的 Linux 环境,各种命令都找不到。此时通过 chroot /sysroot
,切换至正常 Linux 环境。

f. 修改语言环境变量
由于原先系统中的环境变量 LANG=zh_CN.UTF-8,改密时显示上会有问题,因此通过 LANG=en
修改当前环境语言为英文。

g. 改密
此时,万事俱备,使用 passwd root
,输入两次密码,并提示 ‘Success’即可。

h. 应对 SELinux
为了避免 SELinux 的影响,使用 touch /.autorelabel
在根目录下创建一个空文件。否则重启后无法登陆。
i. 重启
通过 VMware Workstation,使虚拟机强制重启。

j. 重启后,用新密码登录 root
3. 问题
-
完成改密后, 能否用
reboot
、init 6
等方式重启?
答:不能。该环境下, init 守护进程未启动。 -
重启后,是否需要将 grub 改回正常?
答:不需要。之前对于 grub 的配置仅为临时配置,每次开机 grub 都会载入固定的配置文件。
七、grub加密
既然系统启动时,可以通过修改 grub 进入单用户模式,从而修改 root 的密码,那么应该采取点动作来防止任何人都能修改grub,从而保障系统的安全。
——> grub 加密
a. 通过命令 grub2-mkpasswd-pbkdf2
,输入你想为grub设置的密码,并自动生成该密码的Hash值(不知道是不是MD5),并复制该Hash
[root@choco-02 ~]# grub2-mkpasswd-pbkdf2
输入口令:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.AF4C00D7C475F0AA21C8BB33C1FD21B479C44D892552805D77A81E83BA0E2B4667AB4CE2479E429BEB87802378A5F42151D38A39466AF0CBE9B66F46768CC594.01EAE15A9B60C4CADD0A7EF2EC5F60E6827769D0E4099CFF3AD97B715D614E11C520ACAA75E5B407E90218E782DF75EB21A3635672D8516E8CB5BDA01DA19FAE
[root@choco-02 ~]#
b. 修改grub的配置文件 /boot/grub2/grub.cfg
,指定grub超级用户名:choco(随意设置),密码对应的加密方式:pbkdf2,以及加密后的密码Hash值
### BEGIN /etc/grub.d/00_header ###
set superusers="choco" #设置超级用户名
export superusers #设置为全局变量
password_pbkdf2 choco grub.pbkdf2.sha512.10000.AF4C00D7C475F0AA21C8BB33C1FD21B479C44D892552805D77A81E83BA0E2B4667AB4CE2479E429BEB87802378A5F42151D38A39466AF0CBE9B66F46768CC594.01EAE15A9B60C4CADD0A7EF2EC5F60E6827769D0E4099CFF3AD97B715D614E11C520ACAA75E5B407E90218E782DF75EB21A3635672D8516E8CB5BDA01DA19FAE
## 上一行写明 加密的方法,超级用户名,密码的hash值
set pager=1
if [ -s $prefix/grubenv ]; then
load_env
c. 重启,再次尝试进入 single 模式。Oops....要密码了。输入一开始设置的密码后,成功登录

八、救援模式
刚给grub加了密,可是当用户同时忘记root密码与grub密码时怎么办?
——>救援模式
a. 插入CentOS镜像光盘

b. 重启进入BIOS,在启动顺序中将CD-ROM调至第一,并用F10保存退出

c. 自动进入光盘引导,选择 Trouble Shooting

d. 选择 Rescue a CentOS System

e. 根据提示,依次输入 1、回车,并通过chroot /mnt/sysimage
切换至正常系统环境,此时运行 passwd root
即可,完成后重启,改回BIOS

九、远程登录
1. 字符型远程客户端工具介绍
Windows
Putty:简介 下载地址
SecureCRT:付费,要破解 下载地址
Xshell(推荐):界面友好,功能强大 下载地址
MacOS 或 Linux
MacOS 属于 UNIX-Like,直接通过‘终端’或‘ iTerm ’即可使用ssh客户端
Linux 可直接用命令行访问
2. 字符型远程访问协议
Telnet
端口:23
特点:明文传输,安全级别低
SSH
端口:22
特点:加密传输,安全级别高
3. Windows 远程访问方法
——仅举例 Xshell 的方法,其他工具大同小异
a. 新建连接

b. 填写基本链接信息如:命名、协议、IP、端口等

c. 填写认证信息

4. MacOS 或 Linux 远程访问方法
命令:ssh -p <端口号> <username>@<ip_addr>
如:ssh -p 5555 root@192.168.1.1
注意:
若不加-p 参数,默认访问服务端22端口
若不加 username@,默认以 当前使用的本地账户 登录远程服务器
5. 在线用户查看
命令1: w
[root@choco-02 ~]# w
11:01:38 up 1:21, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 09:40 29:38 0.09s 0.09s -bash
root pts/0 192.168.1.1 10:31 26:50 0.04s 0.04s -bash
root pts/1 192.168.1.1 10:52 2.00s 0.05s 0.01s w
第一行显示:当前系统时间、系统持续运行的时间、在线用户数、当前负载
表格显示:在线用户、所用终端、源IP、登录时刻等
命令2: who
[root@choco-02 ~]# who
root tty1 2018-05-10 09:40
root pts/0 2018-05-10 10:31 (192.168.1.1)
root pts/1 2018-05-10 10:52 (192.168.1.1)
相当于w的精简版
十、使用秘钥远程登录
远程登录其他主机时总是要输入密码?
用秘钥登录可免去输入密码的过程
1. 非对称加密原理
分享一个链接:图解公钥与私钥,讲解很生动。
2. 一句话概括秘钥远程登录的配置
Clent产生密钥对,将Client的公钥写入Server的 /root/.ssh/authorized_keys 文件中即可
3. Windows操作步骤
——以Xshell为例
a. 在工具菜单中,选择新建用户秘钥生成向导

b. 一路下一步后,输入要生成的密钥对的名称,以及对应的密码,并点击下一步

c. 复制所提供的公钥内容

d. 粘贴进Server中 /root/.ssh/authorized_keys文件中,并做好注释

e. 修改原会话的属性

f. 用户身份验证部分,选择Public Key方法,并输入对应的用户,选择秘钥,填入之前设置的密码。此时再次连接会话已是密钥登陆。

4. Linux操作步骤
a. Client上创建密钥对(一路回车即可)
命令:ssh-keygen -t rsa ##其实不加-t rsa也可,默认就是用rsa加密算法的
[root@choco-02 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ohww3/rX2kOTGcbnwVz9IiGrSMb8saqtK9Fg4lwdeoE root@choco-02
The key's randomart image is:
+---[RSA 2048]----+
| . .|
| E o . . o|
| =oo + + ..|
|. oo *=.. . = * .|
|oo.o.oooS+ . B o |
| o. ...++ = . |
| . =. o . |
| . ..o ..o |
| .++. ...... |
+----[SHA256]-----+
[root@choco-02 ~]# ls .ssh/
id_rsa id_rsa.pub
最终在 /root/.ssh下生成密钥对,id_rsa为私钥,id_rsa.pub为公钥
b. 将公钥内容传递到Server的 /root/.ssh/authorized_keys 文件内(方法较多)
前提:在Server的 /root/ 目录下,有权限为 700 的 .ssh 目录;在 .ssh 目录中有权限为 600 的 authorized_keys 文件。但如果使用下述第二种方式则会自动建立以上目录及文件。
第一种:在Xshell中复制Client的公钥内容,粘贴进Server的authorized_keys中。
第二种:使用ssh-copy-id
命令
命令:ssh-copy-id -i <Pub_key_file> <user_name>@<remote_server>
- 在Client上传输公钥至Server
[root@choco-02 .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.1.251
/usr/bin/ssh- copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.1.251's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.1.251'"
and check to make sure that only the key(s) you wanted were added
[root@choco-02 .ssh]#
- 此时在Server的/root/.ssh/authorized_keys中已存在Client的公钥
[root@choco-01 ~]# cat .ssh/authorized_keys
ssh-rsa A.................此处省略.........7L root@choco-02
- Client已可以使用密钥登陆Server
[root@choco-02 .ssh]# ssh root@192.168.1.251
Last login: Thu May 10 11:44:13 2018 from 192.168.1.1
[root@choco-01 ~]#
第三种:用scp传输公钥,并用 cat .... >> /root/.ssh/authorized_keys的方式将Client公钥追加至该文件尾部。
Tips. 加入authorized_keys文件的公钥,最好注释出是哪台Client的公钥
(The End)