目錄
一、Linux簡介
二、虛擬機(jī)安裝 & 快照 & 克隆
三、網(wǎng)絡(luò)配置
四、重啟與關(guān)機(jī)
五、主機(jī)名配置
六、單用戶模式
七、grub加密
八、救援模式
九、遠(yuǎn)程登錄
十、使用秘鑰遠(yuǎn)程登錄
一、 Linxu簡介
1. Linux家譜

ps. 分享一個(gè) hin 全的Linux家譜圖: Linux家譜
2. RedHat 發(fā)行版分類
- Fedora:社區(qū)版。新功能的測試區(qū)。
- RHEL(Red Hat Enterprise Linux):商業(yè)版。經(jīng)Fedora測試良好的功能會(huì)加入該發(fā)行版。該發(fā)行版多為企業(yè)所用,因?yàn)镽edHat不光提供操作系統(tǒng),還包含相應(yīng)的服務(wù),如:版本升級(jí)、故障維修、漏洞修復(fù)等。
- CentOS:RHEL克隆版。因RHEL的絕大多數(shù)軟件包遵循GPL協(xié)議,因此放出源碼。而CentOS正是由這些開放源碼的軟件包構(gòu)成,所以相當(dāng)于RHEL的一個(gè)克隆版。但是CentOS并非商業(yè)版,因此其不提供相應(yīng)服務(wù),漏洞修復(fù)也滯后于RHEL。
二、虛擬機(jī)安裝 & 快照 & 克隆
1. 實(shí)驗(yàn)環(huán)境簡介
本地環(huán)境
OS:Windows
虛擬化軟件:VMware Workstation
虛機(jī)環(huán)境
OS:CentOS 7
HD:30G
RAM:1GB以上
CPU:1顆單核
2. 虛機(jī)網(wǎng)絡(luò)簡介
NAT
虛擬網(wǎng)卡:VMnet8
效果:功能類似家庭路由器:WAN口接本地,LAN口接虛機(jī),同時(shí)做NAT,訪問別的網(wǎng)絡(luò)時(shí)其實(shí)是以WAN口的IP作為源IP。
橋接
虛擬網(wǎng)卡:VMnet0
效果:功能等同交換機(jī):虛機(jī)與主機(jī)在同一個(gè)網(wǎng)段,相當(dāng)于兩臺(tái)同局域網(wǎng)下的主機(jī)。
僅主機(jī)
虛擬網(wǎng)卡:VMnet1
效果:虛機(jī)僅能與主機(jī)通信。
3. 虛擬機(jī)硬件配置
——安裝虛機(jī)已經(jīng)數(shù)不清次數(shù)了,這里就簡單用截圖記錄了
a. 新建虛擬機(jī),選擇稍后安裝操作系統(tǒng)

b. 操作系統(tǒng)類型,選擇 Linux CentOS 7 64位

c. 設(shè)置主機(jī)名,以及虛擬機(jī)的文件在本地存放的位置

d. 分配30GB的硬盤空間,并默認(rèn)選擇 將虛擬磁盤拆分成多個(gè)文件

e. 配置虛機(jī)硬件

f. 按照實(shí)驗(yàn)環(huán)境,選擇RAM、CPU、網(wǎng)絡(luò);CD Rom的配置要 啟動(dòng)時(shí)鏈接,并在這里指定安裝系統(tǒng)用的ISO文件

g. 設(shè)置完成

4. CentOS 7 安裝
a. 啟動(dòng)虛機(jī),選擇 Install CentOS 7

b. 選擇語言,如果英文水平還可以,推薦使用英文,因?yàn)椴粫?huì)出現(xiàn)字符編碼方面的問題。但實(shí)驗(yàn)環(huán)境我們選擇簡體中文。

c. 軟件配置與系統(tǒng)分區(qū)

d. 軟件配置推薦選擇 最小安裝,該模式較為純凈,有什么需要安裝的軟件可以自行安裝。但可能需要解決較多的依賴性問題。

e. 配置分區(qū):
/boot 200M
swap 2GB(內(nèi)存的2倍)
/ 其余的都給根目錄
swap 大小的選擇
一般為 RAM 的2倍,但上限為8GB 即可





f. 開始安裝

g. 設(shè)置 root 用戶的密碼

h. 完成

5. 快照
“快照”,一種快速保存虛機(jī)某一時(shí)刻狀態(tài)的技術(shù)。當(dāng)系統(tǒng)出現(xiàn)問題時(shí),能夠快速還原至某一個(gè)拍攝快照的狀態(tài)。
a. 右鍵點(diǎn)擊需要拍攝快照的VM,選擇快照,選擇拍攝快照

b. 填寫快照的名稱 及 描述,并點(diǎn)擊拍攝快照

c. 完成后,可查看當(dāng)前已擁有那些快照

d. 更多對(duì)于快照的管理,可以進(jìn)快照管理器中查看

6. 克隆
“克隆”,是復(fù)制一個(gè)一模一樣的VM,可直接對(duì)VM進(jìn)行克隆,也可以對(duì)快照進(jìn)行克??;
由于克隆后,新的VM與原VM完全相同,所以需要修改必要的配置(如IP、hostname等),以防止同時(shí)運(yùn)行這兩臺(tái)VM時(shí)引起沖突。
前提:VM必須處于關(guān)機(jī)狀態(tài),否則將提示無法進(jìn)行克隆
a. 右鍵點(diǎn)擊需要拍攝快照的VM,選擇管理,選擇克隆

b. 進(jìn)入克隆向?qū)Вc(diǎn)擊下一步

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

d. 選擇 創(chuàng)建鏈接克隆

e. 編輯克隆出來的VM的相關(guān)信息

f. 完成克隆

g. 后續(xù)操作
由于新的VM與原VM一模一樣,同時(shí)開啟時(shí)部分配置可能導(dǎo)致沖突,所以需要提前更改,更改內(nèi)容包括但不限于以下內(nèi)容:
- 更改IP地址
- 刪除網(wǎng)卡配置文件中的UUID行
- 修改主機(jī)名
三、網(wǎng)絡(luò)配置
1. 查看網(wǎng)卡信息
- 命令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 #能夠看到還回口的相關(guān)信息
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參數(shù)表示使用純數(shù)字來顯示 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 服務(wù)獲取 IP
- 命令:
dhclient
ps. 無法重復(fù)運(yùn)行dhclient,在第二次運(yùn)行前需要使用dhclient -r來釋放。
4. 直接修改網(wǎng)卡的配置文件(推薦)
配置文件:/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 #是否開機(jī)啟動(dòng)
IPADDR=172.16.166.254 #IP 地址
NETMASK=255.255.255.0 #子網(wǎng)掩碼
GATEWAY=172.16.166.2 #網(wǎng)關(guān)
DNS1=223.5.5.5 #DNS 服務(wù)器
5. 重啟網(wǎng)絡(luò)服務(wù)
- 命令:
systemctl restart network.service
老版本命令:/etc/init.d/network restart 或 service network restart
四、重啟與關(guān)機(jī)
重啟
reboot、init 6、shutdown -r now
關(guān)機(jī)
poweroff、init 0、shutdown -h now
五、主機(jī)名配置
1. 查看主機(jī)名
命令:hostname
[root@localhost ~]# hostname
localhost.localdomain
2. 修改主機(jī)名
命令:hostnamectl set-hostname choco-02
配置文件:/etc/hostname
[root@choco-02 ~]# hostnamectl set-hostname choco-02
[root@choco-02 ~]# cat /etc/hostname #當(dāng)前會(huì)話里提示符并未改變
choco-02 #但是hostname配置文件已經(jīng)改變
[root@choco-02 ~]# hostname
choco-02 #hostname確實(shí)已經(jīng)改變
[root@choco-02 ~]#
重新連接會(huì)話后,提示符得到了更新。

六、單用戶模式
1. Linux 的6種 runlevel
CentOS 6
- 0:關(guān)機(jī)
- 1:單用戶(無需認(rèn)證)
- 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. 其實(shí)對(duì)應(yīng)關(guān)系一目了然,主要是CentOS 7為了照顧從CentOS 6剛來的老用戶。CentOS 6 使用 initd 啟動(dòng),該種方式為串行啟動(dòng),速度較慢;CentOS 7 使用 systemd 啟動(dòng),該方式為并行啟動(dòng),速度較快
2. 進(jìn)入單用戶模式修改 root 密碼
a. 重啟
b. 進(jìn)入 grub
grub 是關(guān)系到 Linux 啟動(dòng)的程序,編輯 grub 可進(jìn)入不同的環(huán)境
重啟后,按上下箭頭,選中 Linux 系統(tǒng),并按'e'進(jìn)入 grub 編輯界面

c. 修改 grub 內(nèi)容
找到以'linux16'開頭的行,找到該行中的 ro(Read Only),改為rw(Read & Write),并在rw后添加 init=/sysroot/bin/sh

修改為

d. 重新加載系統(tǒng)
按照提示,按 Ctrl+x 開始
e. 切換至原系統(tǒng)的相關(guān)環(huán)境
進(jìn)入后,發(fā)現(xiàn)并不是自己使用的 Linux 環(huán)境,各種命令都找不到。此時(shí)通過 chroot /sysroot,切換至正常 Linux 環(huán)境。

f. 修改語言環(huán)境變量
由于原先系統(tǒng)中的環(huán)境變量 LANG=zh_CN.UTF-8,改密時(shí)顯示上會(huì)有問題,因此通過 LANG=en 修改當(dāng)前環(huán)境語言為英文。

g. 改密
此時(shí),萬事俱備,使用 passwd root ,輸入兩次密碼,并提示 ‘Success’即可。

h. 應(yīng)對(duì) SELinux
為了避免 SELinux 的影響,使用 touch /.autorelabel 在根目錄下創(chuàng)建一個(gè)空文件。否則重啟后無法登陸。
i. 重啟
通過 VMware Workstation,使虛擬機(jī)強(qiáng)制重啟。

j. 重啟后,用新密碼登錄 root
3. 問題
完成改密后, 能否用
reboot、init 6等方式重啟?
答:不能。該環(huán)境下, init 守護(hù)進(jìn)程未啟動(dòng)。重啟后,是否需要將 grub 改回正常?
答:不需要。之前對(duì)于 grub 的配置僅為臨時(shí)配置,每次開機(jī) grub 都會(huì)載入固定的配置文件。
七、grub加密
既然系統(tǒng)啟動(dòng)時(shí),可以通過修改 grub 進(jìn)入單用戶模式,從而修改 root 的密碼,那么應(yīng)該采取點(diǎn)動(dòng)作來防止任何人都能修改grub,從而保障系統(tǒng)的安全。
——> grub 加密
a. 通過命令 grub2-mkpasswd-pbkdf2 ,輸入你想為grub設(shè)置的密碼,并自動(dòng)生成該密碼的Hash值(不知道是不是MD5),并復(fù)制該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超級(jí)用戶名:choco(隨意設(shè)置),密碼對(duì)應(yīng)的加密方式:pbkdf2,以及加密后的密碼Hash值
### BEGIN /etc/grub.d/00_header ###
set superusers="choco" #設(shè)置超級(jí)用戶名
export superusers #設(shè)置為全局變量
password_pbkdf2 choco grub.pbkdf2.sha512.10000.AF4C00D7C475F0AA21C8BB33C1FD21B479C44D892552805D77A81E83BA0E2B4667AB4CE2479E429BEB87802378A5F42151D38A39466AF0CBE9B66F46768CC594.01EAE15A9B60C4CADD0A7EF2EC5F60E6827769D0E4099CFF3AD97B715D614E11C520ACAA75E5B407E90218E782DF75EB21A3635672D8516E8CB5BDA01DA19FAE
## 上一行寫明 加密的方法,超級(jí)用戶名,密碼的hash值
set pager=1
if [ -s $prefix/grubenv ]; then
load_env
c. 重啟,再次嘗試進(jìn)入 single 模式。Oops....要密碼了。輸入一開始設(shè)置的密碼后,成功登錄

八、救援模式
剛給grub加了密,可是當(dāng)用戶同時(shí)忘記root密碼與grub密碼時(shí)怎么辦?
——>救援模式
a. 插入CentOS鏡像光盤

b. 重啟進(jìn)入BIOS,在啟動(dòng)順序中將CD-ROM調(diào)至第一,并用F10保存退出

c. 自動(dòng)進(jìn)入光盤引導(dǎo),選擇 Trouble Shooting

d. 選擇 Rescue a CentOS System

e. 根據(jù)提示,依次輸入 1、回車,并通過chroot /mnt/sysimage切換至正常系統(tǒng)環(huán)境,此時(shí)運(yùn)行 passwd root 即可,完成后重啟,改回BIOS

九、遠(yuǎn)程登錄
1. 字符型遠(yuǎn)程客戶端工具介紹
Windows
Putty:簡介 下載地址
SecureCRT:付費(fèi),要破解 下載地址
Xshell(推薦):界面友好,功能強(qiáng)大 下載地址
MacOS 或 Linux
MacOS 屬于 UNIX-Like,直接通過‘終端’或‘ iTerm ’即可使用ssh客戶端
Linux 可直接用命令行訪問
2. 字符型遠(yuǎn)程訪問協(xié)議
Telnet
端口:23
特點(diǎn):明文傳輸,安全級(jí)別低
SSH
端口:22
特點(diǎn):加密傳輸,安全級(jí)別高
3. Windows 遠(yuǎn)程訪問方法
——僅舉例 Xshell 的方法,其他工具大同小異
a. 新建連接

b. 填寫基本鏈接信息如:命名、協(xié)議、IP、端口等

c. 填寫認(rèn)證信息

4. MacOS 或 Linux 遠(yuǎn)程訪問方法
命令:ssh -p <端口號(hào)> <username>@<ip_addr>
如:ssh -p 5555 root@192.168.1.1
注意:
若不加-p 參數(shù),默認(rèn)訪問服務(wù)端22端口
若不加 username@,默認(rèn)以 當(dāng)前使用的本地賬戶 登錄遠(yuǎn)程服務(wù)器
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
第一行顯示:當(dāng)前系統(tǒng)時(shí)間、系統(tǒng)持續(xù)運(yùn)行的時(shí)間、在線用戶數(shù)、當(dāng)前負(fù)載
表格顯示:在線用戶、所用終端、源IP、登錄時(shí)刻等
命令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)
相當(dāng)于w的精簡版
十、使用秘鑰遠(yuǎn)程登錄
遠(yuǎn)程登錄其他主機(jī)時(shí)總是要輸入密碼?
用秘鑰登錄可免去輸入密碼的過程
1. 非對(duì)稱加密原理
分享一個(gè)鏈接:圖解公鑰與私鑰,講解很生動(dòng)。
2. 一句話概括秘鑰遠(yuǎn)程登錄的配置
Clent產(chǎn)生密鑰對(duì),將Client的公鑰寫入Server的 /root/.ssh/authorized_keys 文件中即可
3. Windows操作步驟
——以Xshell為例
a. 在工具菜單中,選擇新建用戶秘鑰生成向?qū)?/strong>

b. 一路下一步后,輸入要生成的密鑰對(duì)的名稱,以及對(duì)應(yīng)的密碼,并點(diǎn)擊下一步

c. 復(fù)制所提供的公鑰內(nèi)容

d. 粘貼進(jìn)Server中 /root/.ssh/authorized_keys文件中,并做好注釋

e. 修改原會(huì)話的屬性

f. 用戶身份驗(yàn)證部分,選擇Public Key方法,并輸入對(duì)應(yīng)的用戶,選擇秘鑰,填入之前設(shè)置的密碼。此時(shí)再次連接會(huì)話已是密鑰登陸。

4. Linux操作步驟
a. Client上創(chuàng)建密鑰對(duì)(一路回車即可)
命令:ssh-keygen -t rsa ##其實(shí)不加-t rsa也可,默認(rèn)就是用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下生成密鑰對(duì),id_rsa為私鑰,id_rsa.pub為公鑰
b. 將公鑰內(nèi)容傳遞到Server的 /root/.ssh/authorized_keys 文件內(nèi)(方法較多)
前提:在Server的 /root/ 目錄下,有權(quán)限為 700 的 .ssh 目錄;在 .ssh 目錄中有權(quán)限為 600 的 authorized_keys 文件。但如果使用下述第二種方式則會(huì)自動(dòng)建立以上目錄及文件。
第一種:在Xshell中復(fù)制Client的公鑰內(nèi)容,粘貼進(jìn)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]#
- 此時(shí)在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文件的公鑰,最好注釋出是哪臺(tái)Client的公鑰
(The End)