centos系統和Ubuntu系統命令區別以及常見操作

一.前言

CentOS(Community ENTerprise Operating System)是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放源程式碼規定釋出的源程式碼所編譯而成。由於出自同樣的源程式碼,因此有些要求高度穩定性的伺服器以CentOS替代商業版的Red Hat Enterprise Linux使用。

Ubuntu是一個以桌面應用為主的Linux作業系統。Ubuntu基於Debian發行版和GNOME桌面環境,與Debian的不同在於它每6個月會發布一個新版本。Ubuntu的目標在於為一般用戶提供一個最新的、同時又相當穩定的主要由自由軟體構建而成的作業系統。Ubuntu具有龐大的社區力量,用戶可以方便地從社區獲得幫助。

兩者同為目前版本中個人和小團隊常用的服務級作業系統,在線提供的軟體庫中可以很方便的安裝到很多開源的軟體及庫。 兩者都使用bash作為基礎shell,所以在很多基礎命令上,ubuntu與centos的差別不是很明顯,而ubuntu在桌面介面上要做的更為出色,很多人如果是從興趣出發而學習linux的首選一般都是ubuntu,畢竟很多人還是很習慣在桌面圖形下操作的。

總而言之,centos更加穩定,Ubuntu對新技術支援度更好

因為我常用的是centos系統和Red Hat Enterprise Linux系統,本文著重講解Ubuntu命令,centos/RHEL命令偏少!

二.系統環境

伺服器版本 系統內核版本 CPU架構
Ubuntu 18.04.5 LTS 4.15.0-112-generic x86_64

三.命令區別

3.1 使用習慣和命令區別

Centos與Ubuntu的使用習慣和命令上有很多的不同,下面簡單列舉一下:

  1. centos中新建的非root用戶是沒有sudo的許可權的,如果需要使用sudo許可權必須在/etc/sudoers 中加入賬戶和許可權,所以切換到root帳號的時候只需要輸入su,加入root帳號的密碼即可;在Ubuntu中,一般使用sudo+命令,如果是第一次使用會提示輸入當前用戶的密碼(而不是root的密碼)。
  2. 在線安裝軟體中,centos使用的是yum命令,而ubuntu中使用的是apt-get命令(最新推薦的是apt命令)。除此之外yum中還有一個從軟體源中搜索某個軟體的方法yum search +軟體名
  3. centos是來自於redhat,所以centos支援rpm格式的安裝,而ubuntu顯然是不支援的。
  4. 畢竟是不同的公司做的不同的發行版,很多配置文件的位置和默認的文件路徑都有很大區別,這個需要使用過程中慢慢體會了。

3.2 服務管理的區別

命令區別總結如下表所示:

image-20220628014134085

3.3 軟體包資訊區別

image-20220628014206348

3.4 軟體包文件資訊區別

示例:Ubuntu系統搜索/sbin/lsmod是由哪個軟體包安裝的

#kmod: /sbin/lsmod表示/sbin/lsmod由kmod軟體包安裝的
root@k8scludes3:~# dpkg -S /sbin/lsmod
kmod: /sbin/lsmod

image-20220628014326590

四.Ubuntu系統常見操作

4.1 Ubuntu系統apt和apt-get的區別

  1. apt命令從Ubuntu 16.04「引入」,許多其他發行版遵循Ubuntu的腳步並開始鼓勵用戶使用apt而不是apt-get。作為普通的 Linux 用戶,優先使用 apt,它是 Linux 發行版推薦的命令。它提供了包管理必要的選項,更重要的是便於記憶。
  2. apt 是 apt-get 和 apt-cache 的子集,為包管理提供必要的命令。
  3. 雖然 apt-get 沒有被棄用,但是作為普通 Linux 用戶,推薦開始頻繁的使用 apt。

4.2 apt-get remove,apt-get purge,apt-get autoremove的區別

  1. apt-get remove :卸載軟體包;
  2. apt-get autoremove :會卸載所有自動安裝且不再使用的軟體包,一般用來清理依賴項(慎用);
  3. apt-get purge:卸載並清除軟體包的配置;

4.3 Ubuntu18防火牆

Ubuntu18默認使用UFW管理防火牆,即Uncomplicated Firewall,是基於iptables實現的防火牆管理工具,旨在簡化配置防火牆的過程,所以實際上UFW修改的是iptables的規則。

4.3.1 Ubuntu防火牆UFW常見命令

安裝ufw

#查看Ubuntu版本
root@localhost:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic

#安裝ufw
#apt-get install ufw

查看ufw版本

root@localhost:~# ufw --version
ufw 0.36
Copyright 2008-2015 Canonical Ltd.

查看ufw是否被安裝

root@localhost:~# dpkg -l | grep ufw
ii  ufw                                    0.36-0ubuntu0.18.04.1                           all          program for managing a Netfilter firewall

查看防火牆狀態

#Status: inactive說明防火牆關閉
root@localhost:~# ufw status
Status: inactive

關閉防火牆

root@localhost:~# ufw disable 
Firewall stopped and disabled on system startup

root@localhost:~# ufw status
Status: inactive

啟動防火牆

root@localhost:~# ufw enable 
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

#可以看到一條防火牆規則:允許外界訪問本機的22埠
root@localhost:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)    

UFW重新載入配置文件

root@localhost:~# ufw reload 

重置UFW

ufw reset

4.3.2 UFW防火牆常用規則

防火牆開啟/禁用語法

ufw allow|deny [service]

默認情況下,UFW將阻止所有傳入連接並允許所有出站連接。 這意味著任何試圖訪問您的伺服器的用戶都將無法連接,除非您專門打開該埠,而伺服器上運行的所有應用程式和服務都將能夠訪問外部世界。
默認策略在/etc/default/ufw文件中定義,可以使用sudo ufw default。

#關閉所有外部對本機的訪問,但本機訪問外部正常
ufw default deny 

打開或關閉某個埠

ufw allow 8000:8100/tcp  允許埠範圍
ufw allow smtp 允許所有的外部IP訪問本機的25/tcp (smtp)埠
ufw allow 22/tcp 允許所有的外部IP訪問本機的22/tcp (ssh)埠
ufw allow 53 允許外部訪問53埠(tcp/udp)
ufw allow from 192.168.1.100 允許此IP訪問所有的本機埠
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 要拒絕所有的流量從TCP的10.0.0.0/8 到埠22的地址192.168.0.1
ufw deny smtp 禁止外部訪問smtp服務
ufw delete allow smtp 刪除上面建立的某條規則

查看埠狀態

root@localhost:~# lsof -i:22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     883 root    3u  IPv4  26893      0t0  TCP *:ssh (LISTEN)
sshd     883 root    4u  IPv6  26895      0t0  TCP *:ssh (LISTEN)
sshd    1744 root    3u  IPv4  27581      0t0  TCP linux:ssh->192.168.110.1:60711 (ESTABLISHED)

root@localhost:~# netstat -antup | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      883/sshd            
tcp        0     36 192.168.110.128:22      192.168.110.1:60711     ESTABLISHED 1744/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      883/sshd            

列出伺服器上可用的所有應用程式配置文件

root@localhost:~# ufw app list
Available applications:
  OpenSSH

4.4 Ubuntu18配置網卡IP地址

Ubuntu Server 18.04採用netplan作為網路配置管理工具。默認的網卡配置文件為01-netcfg.yaml

#01-netcfg.yaml為網卡配置文件
root@localhost:~# ll /etc/netplan/
total 12
drwxr-xr-x  2 root root 4096 Apr 14 15:59 ./
drwxr-xr-x 88 root root 4096 Nov 28  2020 ../
-rw-r--r--  1 root root   84 Apr 14 15:59 01-netcfg.yaml

默認的網路配置資訊如下:

root@localhost:~# cat /etc/netplan/01-netcfg.yaml 
network:
  version: 2
  renderer: networkd
  ethernets:
    ens32:
      dhcp4: dhcp

4.4.1 使用dhcp動態分配IP地址

如果要使用dhcp動態分配IP,則配置修改如下:

root@localhost:~# cat /etc/netplan/01-netcfg.yaml 
network:
  version: 2
  renderer: networkd
  ethernets:
    ens32:
      dhcp4: yes

修改了網卡文件之後需要netplan apply 更新網卡配置

netplan apply 

查看IP地址,192.168.110.128就是dhcp伺服器動態分配的IP地址

root@localhost:~# ifconfig 
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.110.128  netmask 255.255.255.0  broadcast 192.168.110.255
        inet6 fe80::20c:29ff:fe92:3462  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:92:34:62  txqueuelen 1000  (Ethernet)
        RX packets 28639  bytes 21935140 (21.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16661  bytes 1081505 (1.0 MB)
        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 1000  (Local Loopback)
        RX packets 59906  bytes 4255443 (4.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 59906  bytes 4255443 (4.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看用netplan配置的網卡資訊

root@localhost:~# networkctl status ens32
● 2: ens32
       Link File: /lib/systemd/network/99-default.link
    Network File: /run/systemd/network/10-netplan-ens32.network
            Type: ether
           State: routable (configured)
            Path: pci-0000:02:00.0
          Driver: e1000
          Vendor: Intel Corporation
           Model: 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
      HW Address: 00:0c:29:92:34:62 (VMware, Inc.)
         Address: 192.168.110.128
                  fe80::20c:29ff:fe92:3462
         Gateway: 192.168.110.2 (VMware, Inc.)
             DNS: 192.168.110.2
  Search Domains: localdomain

4.4.2 給網卡配置靜態IP地址

靜態IP常用參數解釋:

  • renderer:指定後端網路服務,支援networkd(Systemd-networkd) 和 NetworkManager兩種,默認是networkd。
  • ethernets:指定是乙太網配置,其他的還包括 wifis 或者 bridges
  • ens32:網卡名稱
  • dhcp4:開啟使用ipv4的DHCP,默認是關閉。
  • dhcp6:開啟使用ipv6的DHCP,默認是關閉。
  • addresses:對應網卡配置的靜態ip地址,是ip/掩碼的格式,支援ipv6地址,例如 addresses: [192.168.14.2/24, “2001:1::1/64”]
  • gateway4, gateway6:指定IPv4/6默認網關,使用靜態ip配置時使用。例如IPv4: gateway4: 172.16.0.1 例如IPv6: gateway6: “2001:4::1”
  • nameservers:設置DNS伺服器和搜索域。有兩個受支援的欄位:addresses:是DNS地址列表,search:是搜索域列表,沒有特殊需要可以不配置search這項。

靜態IP配置如下

root@localhost:~# cat /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens32:
      dhcp4: no
      addresses: [192.168.110.128/24]
      gateway4: 192.168.110.2
      nameservers:
        addresses: [192.168.110.2,114.114.114.114]

修改了網卡文件之後需要netplan apply 更新網卡配置

root@localhost:~# netplan apply 

查看用netplan配置的網卡資訊

root@localhost:~# networkctl status ens32
● 2: ens32
       Link File: /lib/systemd/network/99-default.link
    Network File: /run/systemd/network/10-netplan-ens32.network
            Type: ether
           State: routable (configured)
            Path: pci-0000:02:00.0
          Driver: e1000
          Vendor: Intel Corporation
           Model: 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
      HW Address: 00:0c:29:92:34:62 (VMware, Inc.)
         Address: 192.168.110.128
                  fe80::20c:29ff:fe92:3462
         Gateway: 192.168.110.2 (VMware, Inc.)
             DNS: 192.168.110.2
                  114.114.114.114



          

4.5 Ubuntu18配置軟體源

先查看作業系統版本,我們的Ubuntu版本為18.04 bionic,要根據版本添加軟體源

root@localhost:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic

添加阿里雲軟體源

root@localhost:~# cat /etc/apt/sources.list
deb //mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src //mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb //mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src //mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb //mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src //mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb //mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src //mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb //mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src //mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

#這三行是k8s源
deb //mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
deb [arch=amd64] //mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable
# deb-src [arch=amd64] //mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable

更新軟體源

root@localhost:~# apt-get update
Hit:1 //mirrors.aliyun.com/ubuntu bionic InRelease
Hit:2 //mirrors.aliyun.com/ubuntu bionic-security InRelease                                                                      
Hit:3 //mirrors.aliyun.com/ubuntu bionic-updates InRelease                                                                       
Get:4 //mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease [9,383 B]                   
Hit:5 //mirrors.aliyun.com/ubuntu bionic-proposed InRelease                                        
Hit:6 //mirrors.aliyun.com/ubuntu bionic-backports InRelease                                                                      
Hit:7 //mirrors.aliyun.com/docker-ce/linux/ubuntu bionic InRelease    
Ign:8 //mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
Get:8 //mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages [54.7 kB]
Fetched 54.7 kB in 2s (33.3 kB/s)
Reading package lists... Done

五.Ubuntu系統troubleshooting

5.1 xshell連接不上Ubuntu18解決方法

問題描述:

​ 安裝了Ubuntu18系統之後,使用xshell連接不上Ubuntu,執行dpkg -l | grep ssh,發現有openssh-client openssh-server openssh-sftp-server ssh-import-id,防火牆也是關閉狀態,但是xshell就是連接不上

解決方法:

使用apt-get update 更新軟體包列表之後,使用apt-get install ssh安裝ssh,注意在安裝軟體時不執行apt-get update 會報錯

apt-get update
apt-get install ssh 

ssh安裝之後,查看安裝的相關ssh程式包

root@localhost:~# dpkg -l | grep ssh
ii  openssh-client                         1:7.6p1-4ubuntu0.7                              amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                         1:7.6p1-4ubuntu0.7                              amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server                    1:7.6p1-4ubuntu0.7                              amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines
ii  ssh                                    1:7.6p1-4ubuntu0.7                              all          secure shell client and server (metapackage)
ii  ssh-import-id                          5.7-0ubuntu1.1                                  all          securely retrieve an SSH public key and install it locally

重啟ssh

root@localhost:~# /etc/init.d/ssh restart
[ ok ] Restarting ssh (via systemctl): ssh.service.

root@localhost:~# service ssh status
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-04-14 17:36:39 CST; 28s ago
  Process: 14347 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 14348 (sshd)
    Tasks: 1 (limit: 2940)
   CGroup: /system.slice/ssh.service
           └─14348 /usr/sbin/sshd -D

ssh配置文件

root@localhost:~# ls /etc/ssh/sshd_config
/etc/ssh/sshd_config

此時,使用xshell就能連接Ubuntu18.04了

查看ssh埠

root@localhost:~# netstat -antup | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      14348/sshd          
tcp        0     36 192.168.110.128:22      192.168.110.1:55466     ESTABLISHED 14213/sshd: root@pt 
tcp6       0      0 :::22                   :::*                    LISTEN      14348/sshd