1. 程式人生 > >Linux就該這麼學_第11章 使用 ssh 服務管理遠端主機

Linux就該這麼學_第11章 使用 ssh 服務管理遠端主機

本章講解了如下內容:
➢ 配置網路服務;
➢ 遠端控制服務;
➢ 不間斷會話服務。
本章講解了如何使用 nmtui 命令配置網路引數,以及通過 nmcli 命令檢視網路資訊並管
理網路會話服務,從而讓您能夠在不同工作場景中快速地切換網路執行引數;還講解了如何
手工繫結 mode6 模式雙網絡卡,實現網路的負載均衡。。
本章還深入介紹了 SSH 協議與 sshd 服務程式的理論知識、Linux 系統的遠端管理方
法以及在系統中配置服務程式的方法,並採用實驗的形式演示了使用基於密碼驗證的
sshd 服務程式進行遠端登入,以及使用 screen 服務程式遠端管理 Linux 系統的不間斷會
話等技術。
當讀者掌握了本章的內容之後,也就完全具備了對 Linux 系統進行配置管理的知識。而
且後續章節中將陸續引入大量實用服務的配置內容,讀者將用到本章學習的知識進行配置,
這樣一方面可以讓讀者對生產環境中用到的大多數熱門服務程式有一個廣泛且深入的認識,
另一方面也可以掌握相應的配置方法。

9.1 配置網路服務

9.1.1 配置網路引數

截至目前,大家已經完全可以利用當前所學的知識來管理 Linux 系統了。當然,大家
的水平完全可以更進一步,當有朝一日登頂技術巔峰時,您一定會感謝現在正在努力學習
的您。
我們接下來將學習如何在 Linux 系統上配置服務。但是在此之前,必須先保證主機之間
能夠順暢地通訊。如果網路不通,即便服務部署得再正確使用者也無法順利訪問,所以,配置網
絡並確保網路的連通性是學習部署 Linux 服務之前的最後一個重要知識點。
在 4.1.3 小節講解了如何使用 Vim 文字編輯器來配置網路引數,其實,在 RHEL 7 系統中
有至少 5 種網路的配置方法,劉遄老師儘量在本書中為大家逐一演示。這裡教給大家的是使

用 nmtui 命令來配置網路,其具體的配置步驟如圖 9-1 至圖 9-8 所示。當遇到不容易理解的內
容時,我們會額外進行解釋說明。

 

 在 RHEL 5、RHEL 6 系統及其他大多數早期的 Linux 系統中,網絡卡的名稱一直都是 eth0、
eth1、eth2、……,但在 RHEL 7 中則變成了類似於 eno16777736 這樣的名字。不過除了網絡卡
的名稱發生變化之外,其他幾乎一切照舊,因此這裡演示的網路配置實驗完全可以適用於各
種版本的 Linux 系統。

 

 

 

 至此,在 Linux 系統中配置網路的步驟就結束了。
劉遄老師在培訓時經常會發現,很多學員在安裝 RHEL 7 系統時預設沒有啟用網絡卡。如
果各位讀者有同樣的情況也不用擔心,只需使用 Vim 編輯器將網絡卡配置檔案中的 ONBOOT
引數修改成 yes,這樣在系統重啟後網絡卡就被激活了。

 

 [[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=ec77579b-2ced-481f-9c09-f562b321e268
ONBOOT=yes
IPADDR0=192.168.10.10
HWADDR=00:0C:29:C4:A4:09
PREFIX0=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

當修改完 Linux 系統中的服務配置檔案後,並不會對服務程式立即產生效果。要想讓服
務程式獲取到最新的配置檔案,需要手動重啟相應的服務,之後就可以看到網路暢通了:

[[email protected] ~]# systemctl restart network
[[email protected] ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.099 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.095 ms
64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.095 ms
--- 192.168.10.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.056/0.086/0.099/0.018 ms

9.1.2 建立網路會話

RHEL 和 CentOS 系統預設使用 NetworkManager 來提供網路服務,這是一種動態管理網
絡配置的守護程序,能夠讓網路裝置保持連線狀態。可以使用 nmcli 命令來管理 Network
Manager 服務。nmcli 是一款基於命令列的網路配置工具,功能豐富,引數眾多。它可以輕鬆
地檢視網路資訊或網路狀態:

[[email protected] zhangsan]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
enp2s0  8fc01bb0-0c2c-4f16-8887-0ffd40070907  ethernet  enp2s0 
[[email protected] zhangsan]# nmcli con show enp2s0
connection.id:                          enp2s0
connection.uuid:                        8fc01bb0-0c2c-4f16-8887-0ffd40070907
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp2s0
connection.autoconnect:                 是
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.auth-retries:                -1
connection.timestamp:                   1539748129
connection.read-only:                   否
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     未知
connection.lldp:                        default
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          否
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
lines 1-27

另外,RHEL7 系統支援網路會話功能,允許使用者在多個配置檔案中快速切換(非常類似
於 firewalld 防火牆服務中的區域技術)。如果我們在公司網路中使用膝上型電腦時需要手動指
定網路的 IP 地址,而回到家中則是使用 DHCP 自動分配 IP 地址。這就需要麻煩地頻繁修改
IP 地址,但是使用了網路會話功能後一切就簡單多了—只需在不同的使用環境中啟用相應
的網路會話,就可以實現網路配置資訊的自動切換了。

可以使用 nmcli 命令並按照“connection add con-name type ifname”的格式來建立網路會
話。假設將公司網路中的網路會話稱之為 company,將家庭網路中的網路會話稱之為 house,
現在依次建立各自的網路會話。
使用 con-name 引數指定公司所使用的網路會話名稱 company,然後依次用 ifname 參
數指定本機的網絡卡名稱(千萬要以實際環境為準,不要照抄書上的 eno16777736),用
autoconnect no 引數設定該網路會話預設不被自動啟用,以及用 ip4 及 gw4 引數手動指定
網路的 IP 地址:

[[email protected] ~]# nmcli connection add con-name company ifname ens37 autoconnect no type ethernet ip4 192.168.1.7/24 gw4 192.168.1.1
成功新增的連線 'company'(64ebfa9a-db45-4ec4-860c-ce272bfbcce8)。

使用 con-name 引數指定家庭所使用的網路會話名稱 house。因為我們想從外部 DHCP 服
務器自動獲得 IP 地址,因此這裡不需要進行手動指定。

[[email protected] ~]# nmcli connection add con-name house  type ethernet ifname ens37
成功新增的連線 'house'(64d27f58-3be8-4141-b31b-5b104ff31ed4)。

在成功建立網路會話後,可以使用 nmcli 命令檢視建立的所有網路會話:

[[email protected] ~]# nmcli connection show 
名稱        UUID                                  型別            裝置   
ens33       d007cef2-6ad1-41e8-b6e9-a1608c2376fc  802-3-ethernet  ens33  
virbr0      1a7693aa-dc4f-45fe-979a-f14589155815  bridge          virbr0 
有線連線 1  56e1d92b-86a2-3614-87e9-90806edaa223  802-3-ethernet  ens37  
company     64ebfa9a-db45-4ec4-860c-ce272bfbcce8  802-3-ethernet  --     
house       64d27f58-3be8-4141-b31b-5b104ff31ed4  802-3-ethernet  --  

使用 nmcli 命令配置過的網路會話是永久生效的,這樣當我們下班回家後,順手啟用 company
網路會話,網絡卡設定為固定ip地址。

[[email protected] ~]# nmcli connection up company
成功啟用的連線(D-Bus 啟用路徑:/org/freedesktop/NetworkManager/ActiveConnection/4)
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::8209:4d1d:a7e4:8658  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8a:7a:01  txqueuelen 1000  (Ethernet)
        RX packets 7002  bytes 514735 (502.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1111  bytes 109308 (106.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.7  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::1475:dd21:b8a7:a72b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8a:7a:0b  txqueuelen 1000  (Ethernet)
        RX packets 6055  bytes 402270 (392.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58  bytes 8741 (8.5 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 1  (Local Loopback)
        RX packets 12  bytes 1020 (1020.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1020 (1020.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:73:41:3c  txqueuelen 1000  (Ethernet)
        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

 

使用 nmcli 命令配置過的網路會話是永久生效的,這樣當我們下班回家後,順手啟用 house
網路會話,網絡卡就能自動通過 DHCP 獲取到 IP 地址了。

[[email protected] ~]# nmcli connection up house
成功啟用的連線(D-Bus 啟用路徑:/org/freedesktop/NetworkManager/ActiveConnection/5)
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::8209:4d1d:a7e4:8658  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8a:7a:01  txqueuelen 1000  (Ethernet)
        RX packets 7724  bytes 565624 (552.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1182  bytes 118788 (116.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.130  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::4de9:2b05:e8ff:8de2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8a:7a:0b  txqueuelen 1000  (Ethernet)
        RX packets 6708  bytes 445429 (434.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 79  bytes 12026 (11.7 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 1  (Local Loopback)
        RX packets 16  bytes 1360 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 1360 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:73:41:3c  txqueuelen 1000  (Ethernet)
        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

9.1.3 繫結兩塊網絡卡

一般來講,生產環境必須提供 7×24 小時的網路傳輸服務。藉助於網絡卡繫結技術,不僅
可以提高網路傳輸速度,更重要的是,還可以確保在其中一塊網絡卡出現故障時,依然可以正
常提供網路服務。假設我們對兩塊網絡卡實施了繫結技術,這樣在正常工作中它們會共同傳輸
資料,使得網路傳輸的速度變得更快;而且即使有一塊網絡卡突然出現了故障,另外一塊網絡卡
便會立即自動頂替上去,保證資料傳輸不會中斷。
下面我們來看一下如何繫結網絡卡。

第1步:在虛擬機器系統中再新增一塊網絡卡裝置,請確保兩塊網絡卡都處在同一個網路連線
中(即網絡卡模式相同),如圖 9-10 和圖 9-11 所示。處於相同模式的網絡卡裝置才可以進行網絡卡
繫結,否則這兩塊網絡卡無法互相傳送資料。

 第2步:使用 Vim 文字編輯器來配置網絡卡裝置的繫結引數。網絡卡繫結的理論知識類似於
前面學習的 RAID 硬碟組,我們需要對參與繫結的網絡卡裝置逐個進行“初始設定”。需要注意
的是,這些原本獨立的網絡卡裝置此時需要被配置成為一塊“從屬”網絡卡,服務於“主”網絡卡,
不應該再有自己的 IP 地址等資訊。在進行了初始設定之後,它們就可以支援網絡卡繫結。