CentOS 8 基礎設定(時區, EPEL, SSH/sFTP, SEManage, wget)
從頭開始架設 CentOS 8 作為伺服器,不論你要用來作為哪一種伺服器,都需要有這些軟體替你的伺服器打基礎。這其中包含設定伺服器時區的 timedatectl、安裝 EPEL(Extra Packages for Enterprise Linux)、安裝 SEManage、設定 SSH 遠端服務和 sFTP 以及 wget。
上述設定與軟體之中較為特別的是 SEManage,這是用來讓你方便管理 SELinux 設定的套件,好好學一下對於設定會很有幫助的。
If you don’t understand Mandarin, please redirect to the same tutorial wrote in English: Setup a LAMP web server using CentOS 8
修改時區固然是安裝好 Linux 系統後必需先完成的動作之一,設定方法與舊版 CentOS 7 一樣使用 timedatectl 來進行設定,建議直接參考我寫過的舊文。-> CentOS 7 修改時區
既然我們是在 CentOS 8 上面安裝 EPEL repository,若無特殊需求的話就是安裝 EPEL 8。
確認 EPEL 8 下載網址,先連到這裡:https://dl.fedoraproject.org/pub/epel/
此頁面下方應該有個檔案名稱叫做 epel-release-latest-8.noarch.rpm 將他的網址複製下來。
- 使用DNF安裝套件(dnf 是被包裝在 CentOS 8 用來取代 yum 的套件管理軟體)
1 |
$ sudo dnf https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm |
- 傳統做法,首先用 wget 下載 .rpm 檔,再以 rpm 安裝。
1 2 3 4 |
$ sudo yum update $ sudo yum install wget $ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm $ sudo rpm -ivh epel-release-latest-8.noarch.rpm |
養成好習慣,立馬更新套件。
- 使用 dnf 管理套件的更新指令:
1 |
$ sudo dnf update |
- 使用 yum 管理套件的更新指令:
1 |
$ sudo yum update |
CentOS 7 以上預設都會使用 SELinux 作為增強權限管控機制的軟體,然而 SELinux 的指令有點複雜,所以我們可以透過 SEManage 來更有效地設定 SELinux。不論是使用 DNF 或 Yum 的步驟都是一樣的,先找到“包含” SEManage 的套件名稱,再安裝該套件。
必須先找到包含 SEManage 的套件是因為它並非獨立的套件,而是被包裝在一個政策核心工具(Policy core utils)裡面。順便補充一下,安裝此套件會順便安裝 Python,若你的環境對於 Python 版本有強烈要求的話,可能要先釐清一下你的安裝順序。
- 使用 DNF 安裝
1 2 3 4 5 6 7 8 9 10 11 12 |
[andy@www ~]$ sudo dnf whatprovides semanage Failed to set locale, defaulting to C policycoreutils-python-utils-2.8-16.1.el8.noarch : SELinux policy core python utilities Repo : @System Matched from: Filename : /usr/sbin/semanage policycoreutils-python-utils-2.8-16.1.el8.noarch : SELinux policy core python utilities Repo : BaseOS Matched from: Filename : /usr/sbin/semanage [andy@www ~]$ sudo dnf install policycoreutils-python-utils |
- 使用 Yum 安裝
1 2 3 4 5 6 7 8 9 10 11 12 |
[andy@www ~]$ sudo yum whatprovides semanage Failed to set locale, defaulting to C policycoreutils-python-utils-2.8-16.1.el8.noarch : SELinux policy core python utilities Repo : @System Matched from: Filename : /usr/sbin/semanage policycoreutils-python-utils-2.8-16.1.el8.noarch : SELinux policy core python utilities Repo : BaseOS Matched from: Filename : /usr/sbin/semanage [andy@www ~]$ sudo yum install policycoreutils-python-utils |
wget 可以很簡單地下載一個網址的檔案,vim 則是文字編輯軟體,當然你也可以選擇最習慣的軟體來安裝即可。
1 |
$ sudo yum install wget vim |
1 |
$ sudo dnf install wget vim |
sFTP很方便,安裝與設定簡單又還算可靠,蠻推薦作為伺服器 FTP 服務的軟體。
安裝 openssh & openssh-server,使用 dnf 或 yum 安裝都可以。
1 2 3 4 |
$ sudo dnf install openssh openssh-server $ sudo systemctl enable ssh $ sudo firewall-cmd --zone=public --add-service=ssh $ sudo firewall-cmd --reload |
編輯設定檔,編輯完記得重啟 SSH 服務。
p.s. 一定要另外開一個 ssh 連連看,確認設定都沒問題才能斷開原本的連線。
1 |
$ sudo vim /etc/ssh/sshd_config |
1 2 3 4 5 6 7 |
Port 22 AllowUsers xxxx root PermitRootLogin no PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no Subsystem sftp internal-sftp |
1 |
$ sudo systemctl restart sshd |
上述是參考設定值,基本上你只要用關鍵字在設定檔裡面搜尋,除了 4~6行 以外,其餘的都可以放心改成上述設定值。
(第 4~6 行是特別用來設定只使用 SSH Key 登入的時候才需要把相關設定值改成這樣。若只想用密碼登入,就別管 4~6行的設定,免得搞到後來 SSH 登不進去整台伺服器白灌了。)
設定選項 | 設定值 | 說明 |
Port | 若非預設值,最好查一下別和系統預設 Port 撞到 | 連接port號 |
AllowUsers | 伺服器上的帳號 | 只允許特定帳號登入,多個使用者就用空白鍵隔開,建議設定Power user |
PermitRootLogin | yes/no | 是否允許使用 root 帳號登入 (如果你選擇不允許 Root 登入,請務必在確認設定成功之後,才斷開原本 Root 的連線,否則會很麻煩) |
PubkeyAuthentication | yes/no | 是否允許使用 ssh key 登入 |
AuthorizedKeyFile | 路徑 | 記錄被授權的 ssh key 檔案路徑 |
PasswordAuthentication | yes/no | 是否允許使用密碼登入 |
Subsystem | sFTP的設定值 | sFTP的設定值 |
使用 SSH Key 登入
記得要先完成 Step 2 的 4~6 行的設定、重啟 SSH 服務。
(如果不使用 SSH Key 登入 SSH 就跳過這步吧。)
在你的電腦上產生 ssh key,然後透過 ssh-copy-id 把 key 傳送到伺服器。
1 2 |
(Mac)$ ssh-keygen -t rsa -f ~/.ssh/myssh (Mac)$ ssh-copy-id -i ~/.ssh/myssh.pub root@xxx.com.tw |
ssh-keygen:
-f 意思是要把產生出來的 SSH key 存放在哪裡,同時他會產生公、私鑰,其中公鑰檔名以 .pub 結尾
ssh-copy-id:
-i 表示要將哪個 SSH key 複製到伺服器
-u 登入用的使用者名稱
[email protected] 表示你要用連線到 xxx.com.tw 伺服器上的使用者 root
測試
使用 SSH key 登入伺服器。
當然也可以使用FTP軟體連線到伺服器,記得選擇使用sFTP、指定 ssh key即可!
1 |
(Mac)$ ssh root@xxx.com.tw -i ~/.ssh/myssh |
Pingback:CentOS 8 架站教學彙整 - BrilliantCode.net