使用 Ubuntu 20.04 进行初始服务器设置

介紹

當您首次創建一個新的Ubuntu 20.04伺服器時,您應該執行一些重要的配置步驟作為初始設置的一部分。這些步驟將提高您的伺服器安全性和可用性,並為後續操作奠定堅實的基礎。

在您創建一個DigitalOcean Droplet時,您可以選擇將Ubuntu版本添加到您的新Droplet中。使用我們的即用解決方案簡化您的設置。

步驟1 — 以root身份登錄

要登錄到您的伺服器,您需要知道您的伺服器的公共IP地址。您還需要密碼,或者——如果您已經為身份驗證安裝了SSH金鑰——則需要root用戶帳戶的私鑰。如果您還沒有登錄到您的伺服器,您可能想參考我們關於如何使用SSH連接到Droplets的指南,該指南詳細介紹了此過程。

如果您尚未連接到您的伺服器,請立即使用以下命令以 root 用戶身份登錄(將命令中的突出部分替換為您伺服器的公共 IP 地址):

  1. ssh root@your_server_ip

如果出現有關主機驗證的警告,請接受。如果您使用密碼驗證,請提供您的 root 密碼以登錄。如果您使用的是受密碼保護的 SSH 金鑰,您可能會被提示在每個會話中首次使用該金鑰時輸入密碼。如果這是您首次使用密碼登錄到伺服器,您可能還會被提示更改 root 密碼。

關於 root

root 用戶是 Linux 環境中的管理用戶,擁有非常廣泛的權限。由於 root 帳戶的特權增強,我們建議您不要定期使用它。這是因為 root 帳戶甚至可能在意外情況下進行非常具有破壞性的更改。

下一步是為日常使用設置一個具有降低權限的新用戶帳戶。稍後,我們將向您展示如何在需要時臨時獲得增加的權限。

步驟 2 — 創建新用戶

一旦您以 root 身份登录,您就能够添加新用户帐户。在未来,我们将使用这个新帐户登录,而不是 root

此示例创建了一个名为 sammy 的新用户,但您应该用您喜欢的用户名替换它:

  1. adduser sammy

您将被询问一些问题,首先是帐户密码。

输入一个强密码,可选地,填写任何您想要的额外信息。这不是必需的,您可以在任何您想跳过的字段中只按 ENTER

第 3 步 —— 授予管理权限

现在我们有了一个具有常规帐户权限的新用户帐户。然而,我们有时可能需要执行管理任务。

为了避免不得不注销正常用户并以 root 帐户重新登录,我们可以设置所谓的超级用户或 root 权限给我们的常规帐户。这将允许我们的常规用户在命令之前加上单词 sudo 以使用管理权限运行命令。

为了将这些权限添加到我们的新用户,我们需要将用户添加到 sudo 组中。默认情况下,在 Ubuntu 20.04 上,属于 sudo 组的用户可以使用 sudo 命令。

作為root,執行以下命令將您的新使用者添加到sudo群組(將突顯顯示的使用者名稱替換為您的新使用者):

  1. usermod -aG sudo sammy

現在,當以常規使用者身份登錄時,您可以在命令前輸入sudo以使用超級使用者權限運行它們。

步驟4 — 設置基本防火牆

Ubuntu 20.04伺服器可以使用UFW防火牆來確保僅允許對某些服務的連接。我們可以使用這個應用程序設置一個基本的防火牆。

注意:如果您的伺服器運行在DigitalOcean上,您可以選擇使用DigitalOcean Cloud Firewalls而不是UFW防火牆。我們建議一次只使用一個防火牆,以避免可能難以調試的衝突規則。

應用程序可以在安裝時向UFW註冊其配置文件。這些配置文件允許UFW通過名稱來管理這些應用程序。用於允許我們現在連接到伺服器的服務OpenSSH已在UFW中註冊了配置文件。

您可以通過輸入以下命令查看這一點:

  1. ufw app list
Output
Available applications: OpenSSH

我們需要確保防火牆允許SSH連接,以便下次我們可以登錄。我們可以通過輸入以下命令允許這些連接:

  1. ufw allow OpenSSH

之後,我們可以輸入以下命令啟用防火牆:

  1. ufw enable

輸入y並按ENTER以繼續。您可以看到仍然允許SSH連接,方法是輸入:

  1. ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

由於防火牆目前阻止除SSH之外的所有連接,因此如果您安裝並配置其他服務,則需要調整防火牆設置以允許流量進入。您可以在我們的UFW基本操作指南中學習一些常見的UFW操作

步驟5 — 為您的常規用戶啟用外部訪問

現在我們有了一個供日常使用的常規用戶,我們需要確保我們可以直接SSH到該帳戶。

注意:在驗證您可以使用新用戶登錄並使用sudo之前,我們建議保持以root身份登錄。這樣,如果出現問題,您可以作為root進行故障排除並進行任何必要的更改。如果您使用的是DigitalOcean Droplet並且在rootSSH連接方面遇到問題,您可以使用恢復控制台重新獲取對Droplets的訪問權限

配置新用戶的SSH訪問的過程取決於您的服務器的root帳戶是使用密碼還是SSH密鑰進行身份驗證。

如果根帳戶使用密碼驗證

如果您使用密碼登錄到您的帳戶,那麼 SSH 將啟用密碼驗證。您可以通過打開新的終端會話並使用您的新用戶名以 SSH 連接到您的新用戶帳戶:

  1. ssh sammy@your_server_ip

輸入您常規用戶的密碼後,您將被登錄。請記住,如果您需要以管理員權限運行命令,請像這樣在其前面輸入sudo

  1. sudo command_to_run

在每個會話中第一次使用 sudo 時(以及之後定期使用),您將被提示輸入您的常規用戶密碼。

為了增強您服務器的安全性,我們強烈建議設置 SSH 密鑰,而不是使用密碼驗證。請遵循我們的指南 在 Ubuntu 20.04 上設置 SSH 密鑰 以了解如何配置基於密鑰的驗證。

如果根帳戶使用 SSH 密鑰驗證

如果您使用 SSH 金鑰登錄到您的 root 帳戶,那麼 SSH 將禁用密碼身份驗證。您需要將本地公鑰的副本添加到新用戶的 ~/.ssh/authorized_keys 檔案中以成功登錄。

由於您的公鑰已經在伺服器上的 root 帳戶的 ~/.ssh/authorized_keys 檔案中,我們可以將該檔案和目錄結構複製到現有會話中的新用戶帳戶。

使用 rsync 命令最簡單的方法是複製文件並保持正確的所有權和權限。這將通過一個命令複製 root 用戶的 .ssh 目錄,保留權限並修改文件所有者。請確保更改下面命令中的突出顯示部分,以匹配您的常規用戶名:

注意:rsync 命令會不同地處理以斜杠結尾和不以斜杠結尾的源和目的地。在使用 rsync 以下命令時,請確保源目錄(~/.ssh)不包含尾隨斜杠(請檢查您是否使用 ~/.ssh/)。

如果您不小心將尾隨斜杠添加到命令中,rsync 將 root 帳戶的 .ssh 目錄的內容複製到 sudo 用戶的主目錄,而不是複製整個 .ssh 目錄結構。文件將位於錯誤位置,SSH 將無法找到並使用它們。

  1. rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

現在,在本地機器上打開一個新的終端會話,並使用SSH連接到您的新用戶名:

  1. ssh sammy@your_server_ip

您應該可以使用新的用戶帳戶登錄,而無需使用密碼。請記住,如果您需要以管理員權限運行命令,請在命令前加上sudo,就像這樣:

  1. sudo command_to_run

在每個會話中第一次(以及之後定期)使用sudo時,您將被要求輸入常規用戶密碼。

接下來該怎麼做?

到目前為止,您的服務器已經建立了一個穩固的基礎。您現在可以在您的服務器上安裝任何您需要的軟件。

Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04