2018-05-09 课堂笔记

目录

一、Linux简介
二、虚拟机安装 & 快照 & 克隆
三、网络配置
四、重启与关机
五、主机名配置
六、单用户模式
七、grub加密
八、救援模式
九、远程登录
十、使用秘钥远程登录


一、 Linxu简介

1. Linux家谱

2018-05-09 课堂笔记_第1张图片

ps. 分享一个 hin 全的Linux家谱图: Linux家谱

2. RedHat 发行版分类

  • Fedora社区版。新功能的测试区。
  • RHEL(Red Hat Enterprise Linux):商业版。经Fedora测试良好的功能会加入该发行版。该发行版多为企业所用,因为RedHat不光提供操作系统,还包含相应的服务,如:版本升级、故障维修、漏洞修复等。
  • CentOSRHEL克隆版。因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. 新建虚拟机,选择稍后安装操作系统

2018-05-09 课堂笔记_第2张图片

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

2018-05-09 课堂笔记_第3张图片

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

2018-05-09 课堂笔记_第4张图片

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

2018-05-09 课堂笔记_第5张图片

e. 配置虚机硬件

2018-05-09 课堂笔记_第6张图片

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

2018-05-09 课堂笔记_第7张图片

g. 设置完成

2018-05-09 课堂笔记_第8张图片

4. CentOS 7 安装

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

2018-05-09 课堂笔记_第9张图片

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

2018-05-09 课堂笔记_第10张图片

c. 软件配置与系统分区

2018-05-09 课堂笔记_第11张图片

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

2018-05-09 课堂笔记_第12张图片

e. 配置分区:

/boot  200M
swap   2GB(内存的2倍)
/      其余的都给根目录

swap 大小的选择
一般为 RAM 的2倍,但上限为8GB 即可

2018-05-09 课堂笔记_第13张图片
2018-05-09 课堂笔记_第14张图片
2018-05-09 课堂笔记_第15张图片
2018-05-09 课堂笔记_第16张图片
2018-05-09 课堂笔记_第17张图片

f. 开始安装

2018-05-09 课堂笔记_第18张图片

g. 设置 root 用户的密码

2018-05-09 课堂笔记_第19张图片

h. 完成

2018-05-09 课堂笔记_第20张图片

5. 快照

“快照”,一种快速保存虚机某一时刻状态的技术。当系统出现问题时,能够快速还原至某一个拍摄快照的状态。

a. 右键点击需要拍摄快照的VM,选择快照,选择拍摄快照

2018-05-09 课堂笔记_第21张图片

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

2018-05-09 课堂笔记_第22张图片

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

2018-05-09 课堂笔记_第23张图片

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

2018-05-09 课堂笔记_第24张图片

6. 克隆

“克隆”,是复制一个一模一样的VM,可直接对VM进行克隆,也可以对快照进行克隆;
由于克隆后,新的VM与原VM完全相同,所以需要修改必要的配置(如IP、hostname等),以防止同时运行这两台VM时引起冲突。

前提:VM必须处于关机状态,否则将提示无法进行克隆

a. 右键点击需要拍摄快照的VM,选择管理,选择克隆

2018-05-09 课堂笔记_第25张图片

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

2018-05-09 课堂笔记_第26张图片

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

2018-05-09 课堂笔记_第27张图片

d. 选择 创建链接克隆

2018-05-09 课堂笔记_第28张图片
克隆4.jpg

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

2018-05-09 课堂笔记_第29张图片

f. 完成克隆

2018-05-09 课堂笔记_第30张图片

g. 后续操作
由于新的VM与原VM一模一样,同时开启时部分配置可能导致冲突,所以需要提前更改,更改内容包括但不限于以下内容:

  • 更改IP地址
  • 删除网卡配置文件中的UUID行
  • 修改主机名

三、网络配置

1. 查看网卡信息

  • 命令1:ip addr
[root@localhost ~]# ip addr
1: lo:  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:  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  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
    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  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10
    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 restartservice network restart


四、重启与关机

重启
rebootinit 6shutdown -r now

关机
poweroffinit 0shutdown -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 编辑界面

2018-05-09 课堂笔记_第31张图片

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

2018-05-09 课堂笔记_第32张图片

修改为

d. 重新加载系统

按照提示,按 Ctrl+x 开始

e. 切换至原系统的相关环境
进入后,发现并不是自己使用的 Linux 环境,各种命令都找不到。此时通过 chroot /sysroot,切换至正常 Linux 环境。

2018-05-09 课堂笔记_第33张图片

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

2018-05-09 课堂笔记_第34张图片

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

2018-05-09 课堂笔记_第35张图片

h. 应对 SELinux

为了避免 SELinux 的影响,使用 touch /.autorelabel 在根目录下创建一个空文件。否则重启后无法登陆

i. 重启
通过 VMware Workstation,使虚拟机强制重启。


2018-05-09 课堂笔记_第36张图片

j. 重启后,用新密码登录 root

3. 问题

  1. 完成改密后, 能否用 rebootinit 6等方式重启?
    答:不能。该环境下, init 守护进程未启动。

  2. 重启后,是否需要将 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....要密码了。输入一开始设置的密码后,成功登录

2018-05-09 课堂笔记_第37张图片

八、救援模式

刚给grub加了密,可是当用户同时忘记root密码与grub密码时怎么办?
——>救援模式

a. 插入CentOS镜像光盘

2018-05-09 课堂笔记_第38张图片

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

2018-05-09 课堂笔记_第39张图片

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

2018-05-09 课堂笔记_第40张图片

d. 选择 Rescue a CentOS System

2018-05-09 课堂笔记_第41张图片

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

2018-05-09 课堂笔记_第42张图片

九、远程登录

1. 字符型远程客户端工具介绍

Windows
Putty:简介 下载地址
SecureCRT:付费,要破解 下载地址
Xshell(推荐):界面友好,功能强大 下载地址

MacOS 或 Linux
MacOS 属于 UNIX-Like,直接通过‘终端’或‘ iTerm ’即可使用ssh客户端
Linux 可直接用命令行访问

2. 字符型远程访问协议

Telnet
端口:23
特点:明文传输,安全级别低

SSH

端口:22
特点:加密传输,安全级别高

3. Windows 远程访问方法

——仅举例 Xshell 的方法,其他工具大同小异

a. 新建连接

2018-05-09 课堂笔记_第43张图片

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

2018-05-09 课堂笔记_第44张图片

c. 填写认证信息

2018-05-09 课堂笔记_第45张图片

4. MacOS 或 Linux 远程访问方法

命令:ssh -p <端口号> @
如:ssh -p 5555 [email protected]

注意:
若不加-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. 在工具菜单中,选择新建用户秘钥生成向导

2018-05-09 课堂笔记_第46张图片

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

2018-05-09 课堂笔记_第47张图片

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

2018-05-09 课堂笔记_第48张图片

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

2018-05-09 课堂笔记_第49张图片

e. 修改原会话的属性

2018-05-09 课堂笔记_第50张图片

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

2018-05-09 课堂笔记_第51张图片

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 @

  • 在Client上传输公钥至Server
[root@choco-02 .ssh]# ssh-copy-id -i id_rsa.pub [email protected]
/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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
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 [email protected]
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)

你可能感兴趣的:(2018-05-09 课堂笔记)