如何在 Ubuntu 20.04 上添加 SSH 密鑰

如何在 Ubuntu 20.04 上添加 SSH 密鑰

使用 SSH 密鑰設置安全的無密碼登錄到遠程 Ubuntu 服務器

SSH 是一種安全的客戶端-服務器網絡協議,可幫助客戶端計算機連接到遠程服務器並與之通信。SSH 連接確保在終端中鍵入的命令通過加密通道發送到遠程服務器。

有兩種類型的身份驗證機制用於連接到遠程服務器,基於密碼的身份驗證(容易受到暴力攻擊)和基於 SSH 密鑰的身份驗證(非常安全)。

在基於 SSH 密鑰的認證中,在客戶端計算機上生成一個密鑰對,稱為公鑰和私鑰。此公鑰的副本在遠程服務器上可用。當客戶端向服務器發送連接請求時,服務器會生成一個隨機字符串並使用公鑰對其進行加密。該字符串只能使用客戶端計算機上可用的私鑰解密。此方法確保服務器只能由包含私鑰的客戶端訪問。

在本指南中,我們將看到如何在 Ubuntu 20.04 LTS 服務器上設置 SSH 密鑰。

查看您的計算機上是否有任何現有的 SSH 密鑰

要檢查計算機上是否已存在 SSH 密鑰對,請在終端中鍵入此命令。

ls -l ~/.ssh/id_*.pub

如果上述命令返回no such file or directoryno matches found,則表示 SSH 密鑰對不存在。

如果您有現有的 SSH 密鑰對,那麼您可以使用相同的密鑰對訪問兩個遠程服務器,或者您也可以創建具有不同名稱的不同密鑰對。讓我們繼續下一步,看看如何為這兩種情況生成 SSH 密鑰。

在客戶端計算機上創建 SSH 密鑰

要在您的計算機上生成新的 SSH 密鑰對,請鍵入如下所示的命令。

ssh-keygen

默認情況下,SSH 密鑰為 2048 位。為了更好的安全性,如果要生成更高位的 SSH 密鑰,則使用以下命令。

ssh-keygen -b 4096

如果該命令運行成功,則屏幕上將提示以下消息。

生成公鑰/私鑰 rsa 密鑰對。
輸入保存密鑰的文件 (/home/harshit/.ssh/id_rsa):

現在,如果您的計算機上沒有任何現有的 SSH 密鑰對,則只需按Enter,但如果您有現有的 SSH 密鑰,則使用不同的文件名保存密鑰,如下所示。

輸入保存密鑰的文件 (/home/your_name/.ssh/id_rsa):/home/your_name/.ssh/id_rsa_xxx

xxx文件名末尾的替換為適當的名稱,如下所示,然後按Enter

輸入保存密鑰的文件 (/home/your_name/.ssh/id_rsa):/home/your_name/.ssh/id_rsa_client_1

下一個提示將要求您輸入任意長度的密碼,這將確保您設備的兩級安全。 

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

輸入此密碼將確保即使有人可以訪問您的私鑰,如果沒有此密碼,他將無法訪問您的遠程服務器。

整個過程完成後,屏幕上會顯示以下消息。

如何在 Ubuntu 20.04 上添加 SSH 密鑰

SSH 密鑰已在您的系統上生成。現在是時候在遠程服務器上複製公鑰了。

將公鑰複製到遠程 Ubuntu 服務器

將公鑰複製到遠程服務器的最簡單快捷的方法是使用該ssh-copy-id實用程序。但是,如果由於某種原因此實用程序在您的計算機上不可用,那麼您也可以使用本節中提供的其他方法。

使用 ssh-copy-id 實用程序

ssh-copy-id實用程序默認在您的 Ubuntu 機器上可用,它將公鑰從您的設備複製到遠程 Ubuntu 機器的相應目錄。

要復制公共 ssh 密鑰,只需在終端中鍵入命令,如下所示。

ssh-copy-id [email protected]

更換usernamehostname在您的服務器的用戶名和主機名上面的命令。

如果您是第一次連接到您的主機,以下消息將出現在您的終端上,鍵入yes並按Enter

無法確定主機“172.105.XX.XX (172.105.XX.XX)”的真實性。
ECDSA 密鑰指紋為 xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx。
您確定要繼續連接嗎(是/否)?是的

現在,該ssh-copy-id實用程序將掃描名稱id_rsa.pub中包含公共 SSH 密鑰的文件。掃描過程完成後,它會提示您輸入遠程服務器的密碼,如下所示。輸入密碼並點擊Enter

/usr/bin/ssh-copy-id: INFO: 嘗試使用新密鑰登錄,以過濾掉任何已安裝的密鑰
/usr/bin/ssh-copy-id: INFO: 1 key(s) left to be installed - 如果現在提示您安裝新密鑰
[email protected]的密碼:

添加密鑰後,以下消息將作為輸出顯示在您的終端上。

添加的密鑰數量:1
現在嘗試登錄機器,使用:“ssh ' [email protected] '”並檢查以確保只添加了您想要的密鑰。

如果您的客戶端計算機上有多個 SSH 密鑰,則要將適當的公鑰複製到遠程計算機,請鍵入如下所示的模式中的命令。

ssh-copy-id -i id_rsa_xxx.pub [email protected]

💡小貼士

在終端中輸入時,不要忘記將 .pub 放在文件名的末尾。

通過管道方式複制公鑰

如果ssh-copy-id實用程序不可用,請在終端中鍵入以下命令。這個命令可能看起來有點長,但它工作得很好。

cat ~/.ssh/id_rsa.pub | ssh [email protected]_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

用您的用戶名和 IP 地址替換remote_usernameserver_ip_address

如果您的計算機上有多個 SSH 密鑰可用,則將 替換id_rsa.pub為您選擇的公共 SSH 密鑰文件。例如,id_rsa_client_1.pub

出現提示時鍵入遠程用戶密碼並點擊Enter

[email protected]'s password:

輸入密碼後,id_rsa.pub文件將被複製到authorized_keys遠程服務器的文件中。

手動複製公鑰

當您無法通過密碼驗證訪問遠程系統時,請使用此方法。

id_rsa.pub使用cat終端中的命令打開文件。您也可以從文本編輯器中打開它,目的只是複製文件的內容。

cat ~/.ssh/id_rsa.pub

文件內容如下所示。

SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH [電子郵件保護] _PC

現在,登錄到您的遠程服務器並使用下面顯示的命令粘貼複製的內容。將 替換為above_string複制的內容。

echo above_string >> ~/.ssh/authorized_keys

配置多個 SSH 密鑰(可選)

此步驟適用於在其客戶端計算機上設置多個 SSH 密鑰的人員。如果您只有一個 SSH 密鑰設置,請跳過此部分。

要管理多個 SSH 密鑰,我們現在將使用如下所示的命令config.ssh目錄中創建一個文件。

cd ~/.ssh
vim config

鍵入i進入命令模式並鍵入多個主機的詳細信息,如下例所示:

Host remote-ubuntu-server
HostName 172.105.XX.XX
User root
IdentityFile ~/.ssh/id_rsa_client_1

Host remote-ubuntu-server
HostName 172.106.XX.XX
User root
IdentityFile ~/.ssh/id_rsa_client_2

同樣,鍵入其他遠程服務器及其密鑰的詳細信息。過程完成後,按Esc:wq保存並退出。

現在,對於客戶端計算機上具有單個或多個 SSH 密鑰的後續過程是相同的。

使用 SSH 密鑰登錄到您的遠程服務器

複製公鑰的過程完成後,通過鍵入如下所示的命令登錄到遠程服務器。

ssh [email protected]_ip_address

如果您在生成密鑰對時提供了密碼短語,則會提示您輸入密碼。身份驗證過程完成後,將打開一個新會話。

您現在已經在遠程服務器上成功配置了基於 SSH 密鑰的身份驗證。但是基於密碼的身份驗證在您的服務器上仍然處於活動狀態,這意味著您的遠程服務器仍然容易受到暴力攻擊。

所以現在我們將從我們的遠程服務器完全禁用基於密碼的登錄機制。

禁用基於密碼的登錄機制

在進行任何更改之前,請確保遠程帳戶的 root 用戶或任何啟用了 sudo 的用戶可以使用基於 SSH 密鑰的身份驗證系統訪問您的服務器。此步驟將完全鎖定或禁用基於密碼的登錄,因此至關重要的是至少有一個用戶 root 權限可以通過 SSH 密鑰訪問服務器。

登錄到您的遠程 Ubuntu 服務器並鍵入如下所示的命令。

sudo vim /etc/ssh/sshd_config
  • Esc/然後輸入“PasswordAuthentication”並點擊enter。 
  • 現在按下i並將“PasswordAuthentication yes”的值更改為“PasswordAuthentication no”。
  • Esc並重複上述過程以找到“ChallengeResponseAuthentication”、“UsePAM”,並將它們的值也更改no為。
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

將所有值設置為 後no,按Esc,鍵入:wq並點擊enter

要激活所有更改,請ssh使用以下命令重新啟動服務。

sudo systemctl restart ssh

現在在您的計算機上打開一個新的終端窗口,並在關閉當前會話之前驗證您的 SSH 密鑰身份驗證是否正常工作。

驗證過程完成後,關閉所有正在運行的會話。

我們現在已經在我們的 Ubuntu 20.04 服務器上成功配置了基於 SSH 密鑰的身份驗證。現在沒有人可以使用基於密碼的登錄機制登錄到您的服務器。 


如何在 Chromebook 上複製和粘貼

如何在 Chromebook 上複製和粘貼

在切換到 Chromebook 時,您可能想知道的第一件事是如何做基本的事情——你在以前的操作系統中掌握的那種東西。複製和粘貼是您必須在某一時刻使用的一項基本功能。

如何使用 tt 在 Linux 上進行打字測試

如何使用 tt 在 Linux 上進行打字測試

在現代科技時代,打字已成為許多職業最常見的活動之一。學會更快更準確地打字可以幫助您在相同的時間內完成更多的工作。

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Ubuntu 因其健壯性和相對較少的錯誤而廣受歡迎。但它肯定不是沒有問題。其中一個問題是其 Wi-Fi 驅動程序。您可能會打開系統電源,卻發現您的 Wi-Fi 無法正常工作。

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

除了所有的絨毛,這裡列出了適用於 Ubuntu 的最佳免費視頻編輯器,您可以使用它們來創建令人驚嘆的視頻。

如何在 Chromebook 上創建和掃描二維碼

如何在 Chromebook 上創建和掃描二維碼

快速響應碼,簡稱 QR 碼,是一種高級條碼,包含比傳統條碼更多的信息。這些代碼是二維的,允許您垂直或水平掃描它們。

如何在 Arch Linux 中安裝和刪除軟件包

如何在 Arch Linux 中安裝和刪除軟件包

想在 Arch Linux 上安裝軟件包但不知道如何安裝?很多人第一次從基於 Debian 的發行版遷移到 Arch 時都會遇到這個問題。但是,您可以使用包管理器輕鬆管理基於 Arch 的系統上的包。

如何在 Linux 上安裝 Spotify

如何在 Linux 上安裝 Spotify

Spotify 是最大的音樂流媒體服務之一。它具有適用於移動(Android 和 iOS)和桌面(Mac 和 Windows)設備的本機客戶端。

9 個讓你開始使用 Linux 的基本命令

9 個讓你開始使用 Linux 的基本命令

Linux 操作指南通常希望您在終端中執行某些操作,這乍一看似乎令人生畏。但不要擔心;這個 Linux 命令備忘單將涵蓋打開終端和發出一些有用命令的過程。

如何使用 Mv 命令移動 Linux 文件

如何使用 Mv 命令移動 Linux 文件

雖然您可能已經知道如何使用 GUI 文件瀏覽器在 Linux 中移動文件,但您可能想知道終端中是否有移動命令可以讓您快速將文件移動到不同的目錄。mv 命令就是您想要的,它的簡單語法和一些可選的安全標誌易於使用。

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

默認情況下,Ubuntu 允許您切換應用程序而不是窗口。以下是如何在 Ubuntu 上的 Alt-Tab 中反轉它並取消組合選項卡。