如何在 Debian 10 上生成和設定 SSH 金鑰?


介紹

在當今世界,大部分通訊和資料傳輸都透過網路和網際網路進行,安全已成為一個至關重要的議題。不安全的網路可能允許惡意使用者攔截、修改或竊取敏感資料。為了確保網路通訊安全,加密起著至關重要的作用。

安全外殼協議 (SSH) 是一種加密協議,允許您安全地訪問遠端系統。它在不安全的網路上提供兩個不受信任的主機之間的安全通訊。

SSH 金鑰是 SSH 用於系統之間安全通訊的身份驗證憑據。與僅使用密碼相比,它們提供了一種更安全的方式來登入伺服器。

在 Debian 10 上生成 SSH 金鑰

SSH 金鑰是保護您網際網路通訊的有效方法。透過使用 SSH 金鑰,您可以確保只有授權方才能訪問您的伺服器。在 Debian 10 上生成金鑰是一個簡單的過程,涉及使用 ssh-keygen 命令列工具。

使用 ssh-keygen 命令生成 SSH 金鑰的分步指南

要在 Debian 10 上生成 SSH 金鑰,您需要遵循以下幾個簡單的步驟:

  • 開啟您的終端並輸入以下命令:

ssh-keygen 
  • 系統將提示您輸入新金鑰檔案的名稱和位置。

    預設位置通常是 ~/.ssh/id_rsa,這在大多數情況下都可以。如果您想更改位置或檔名,現在可以這樣做。

  • 接下來,系統將提示您輸入密碼短語。密碼短語透過使用密碼加密您的私鑰來增加額外的安全層。

    強烈建議您選擇一個包含大小寫字母、數字和符號的強密碼短語。

  • 輸入兩次密碼短語後,ssh-keygen 將生成兩個檔案:一個私鑰檔案 (id_rsa) 和一個公鑰檔案 (id_rsa.pub)。

在 Debian 10 伺服器上設定 SSH 金鑰

有兩種方法可以將公鑰複製到伺服器:使用 ssh-copy-id 命令或手動透過 SFTP/SCP 複製。

使用 ssh-copy-id 命令複製公鑰

將您的公鑰複製到伺服器的最簡單方法是使用 ssh-copy-id 命令。此命令將您的公鑰檔案 (通常名為 id_rsa.pub) 的內容複製到遠端計算機主目錄中名為 authorized_keys 的檔案。

要使用此方法,請在終端視窗中執行以下命令:

ssh-copy-id username@remote_host 

將 `username` 替換為您在遠端計算機上的使用者名稱,將 `remote_host` 替換為其 IP 地址或主機名。系統將提示您輸入遠端計算機上的密碼,之後您的公鑰將被複制。

手動複製公鑰

如果您不想使用 ssh-copy-id,您可以手動透過 SFTP 或 SCP 複製您的公鑰。首先,透過執行以下命令找到您的公鑰檔案:

cat ~/.ssh/id_rsa.pub 

複製打印出的所有內容(包括開頭的“ssh-rsa”,但不包括末尾的使用者名稱@主機名)。接下來,使用 FileZilla 或 WinSCP 等 SFTP/SCP 客戶端連線到您的遠端計算機。

導航到您的主目錄,如果不存在,則建立一個名為 authorized_keys 的新檔案。在編輯器中開啟此檔案,然後貼上您剛剛複製的內容。

使用以下命令設定正確的許可權:

chmod 600 ~/.ssh/authorized_keys 

停用密碼身份驗證以增強安全性

將您的公鑰複製到伺服器後,您應該停用密碼身份驗證以增強安全性。這確保只有擁有正確私鑰的使用者才能訪問伺服器。要停用密碼身份驗證,請在遠端計算機上編輯 /etc/ssh/sshd_config 檔案,方法是執行:

sudo nano /etc/ssh/sshd_config 

找到顯示 `#PasswordAuthentication yes` 的行,並將其更改為 `PasswordAuthentication no`。

儲存並關閉檔案。使用以下命令重新啟動 SSH 服務:

sudo systemctl restart sshd 

您現在將能夠僅使用您的 SSH 金鑰登入到您的遠端計算機。

將 SSH 金鑰與 Git 倉庫一起使用

如何將您的公鑰新增到您的 Git 帳戶?

將您的公鑰新增到您的 Git 帳戶是在 Git 倉庫中使用 SSH 金鑰的重要步驟。使用 ssh-keygen 命令生成金鑰後,您需要複製公鑰檔案 (通常名為 id_rsa.pub) 的內容,並將其貼上到您的 Git 帳戶設定中。為此,請登入到您的 Git 帳戶,然後導航到設定頁面中的 SSH 金鑰部分。

配置本地計算機上的 Git 客戶端以使用 SSH 而不是 HTTPS

預設情況下,大多數 Git 客戶端在與遠端倉庫通訊時使用 HTTPS。但是,將您的公鑰新增到您的 Git 帳戶並設定 SSH 身份驗證後,建議您配置本地計算機上的 Git 客戶端以使用 SSH 協議而不是 HTTPS。

為此,請開啟終端或命令提示符,然後導航到要從 HTTPS 切換到 SSH 的倉庫。然後執行以下命令:

git remote set-url origin git@github.com:/.git 

將 `` 替換為您的使用者名稱,將 `` 替換為要切換到的倉庫的名稱。

管理 SSH 金鑰的最佳實踐

您應該多久輪換一次金鑰?

管理 SSH 金鑰的最佳實踐之一是定期輪換它們。這意味著生成新的金鑰對並替換舊金鑰對。輪換頻率取決於所需的安全性級別以及金鑰對的使用頻率。

對於高安全環境,建議每 90 天或更短時間輪換一次金鑰。此外,如果懷疑金鑰可能已被洩露,則應立即輪換金鑰。

如有必要,如何撤銷訪問許可權?

撤銷訪問許可權意味著阻止未經授權的使用者使用其 SSH 金鑰對訪問您的伺服器。如果您懷疑有人可能洩露了您的私鑰,或者曾經被授權但不再需要訪問許可權的人,您可以透過從伺服器上的 authorized_keys 檔案中刪除其公鑰來撤銷其訪問許可權。

保護私鑰的技巧

私鑰必須始終保持安全,因為擁有此檔案可以完全控制任何安裝其對應的公鑰作為授權登入金鑰的系統。

有多種方法可以保護您的私鑰:

  • 使用強密碼短語保護它們

  • 將它們儲存在加密儲存中,例如外部硬碟驅動器

  • 使用密碼管理器管理您的 SSH 金鑰並確保其安全

  • 不要與任何人共享它們,也不要將它們上傳到線上儲存或 Git 倉庫。

請記住,如果您的私鑰被洩露,您需要立即撤銷訪問許可權並生成新的金鑰對。保護您的私鑰是防止未經授權訪問您的系統的首要防線。

結論

在 Debian 10 上生成和設定 SSH 金鑰是確保伺服器和客戶端之間安全通訊的關鍵步驟。與傳統的基於密碼的身份驗證相比,使用 SSH 金鑰具有許多優勢,包括更高的安全性、便利性和易用性。按照本文中概述的分步指南,您可以快速輕鬆地生成和設定您的 SSH 金鑰。

更新於:2023年6月6日

851 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告