美文网首页Linux 课堂笔记
2018-05-09 课堂笔记

2018-05-09 课堂笔记

作者: chocolee911 | 来源:发表于2018-05-11 11:24 被阅读0次

    目录

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


    一、 Linxu简介

    1. Linux家谱

    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. 新建虚拟机,选择稍后安装操作系统

    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. 选择 创建链接克隆

    克隆4.jpg

    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 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 编辑界面

    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. 问题

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


    八、救援模式

    刚给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)

    相关文章

      网友评论

        本文标题:2018-05-09 课堂笔记

        本文链接:https://www.haomeiwen.com/subject/stffdftx.html