什么是 SSH?SSH,或 Secure Shell,是一種網(wǎng)絡(luò)協(xié)議,允許用戶通過 Internet 遠(yuǎn)程管理他們的服務(wù)器或計(jì)算機(jī),其中兩臺機(jī)器之間的通信被高度加密并防止被竊聽。用戶在他或她的機(jī)器上運(yùn)行客戶端,網(wǎng)絡(luò)連接將用戶的擊鍵和命令從用戶的本地機(jī)器傳送到遠(yuǎn)程服務(wù)器。然后網(wǎng)絡(luò)連接將服務(wù)器的響應(yīng)傳回給用戶。
與使用不受保護(hù)的網(wǎng)絡(luò)協(xié)議(如 telnet 和 rlogin)遠(yuǎn)程管理計(jì)算機(jī)的舊方法相比,SSH 提供了一種安全的替代方法,可以替代不安全的網(wǎng)絡(luò)連接(如 Internet)。如今,SSH 在大多數(shù)(如果不是全部)服務(wù)器中都有提供。
用戶可以通過運(yùn)行 PuTTY 客戶端、終端、Bash 或任何其他客戶端,通過 SSH 輸入用戶名和密碼來連接到遠(yuǎn)程服務(wù)器。然而,還有一個比每次連接到遠(yuǎn)程服務(wù)器時都輸入密碼更安全、更簡單的選擇,即在所述 SSH 服務(wù)器上使用 SSH 公鑰進(jìn)行身份驗(yàn)證。
什么是 SSH 公鑰身份驗(yàn)證以及它們?nèi)绾喂ぷ鳎?/p>
SSH 服務(wù)器可以通過多種方式對用戶進(jìn)行身份驗(yàn)證,其中最常用的方法是通過密碼和公鑰身份驗(yàn)證。
通常,用戶如何安全地連接到他們的服務(wù)器是打開 PuTTY/Terminal/Bash 并通過使用 GUI 登錄或在終端中鍵入 ssh username@IPAddress 來啟動 SSH 連接,然后繼續(xù)輸入密碼提示時。
但是,當(dāng)您想登錄到遠(yuǎn)程服務(wù)器時,不是在 PuTTY/Terminal 客戶端中鍵入密碼,而是另一種安全身份驗(yàn)證的方法是使用 SSH 公鑰進(jìn)行身份驗(yàn)證,這是在不鍵入密碼的情況下進(jìn)行身份驗(yàn)證。
SSH 密鑰身份驗(yàn)證成對工作:私鑰和公鑰。與對稱加密(加密和解密使用相同的密鑰)不同,SSH 密鑰認(rèn)證采用非對稱加密算法,加密和解密使用不同的密鑰。
用戶(或授權(quán)人)需要生成私鑰和公鑰。私鑰必須安全保密,不得與任何其他人共享。如果私鑰被泄露,它幾乎就像消失了一樣,因?yàn)閻阂庥脩艨赡軙褂盟借€訪問遠(yuǎn)程服務(wù)器,而且如果私鑰不受任何密碼保護(hù)。
與私鑰一起生成的公鑰可以與任何服務(wù)器共享。然后使用SSH協(xié)議將公鑰上傳到用戶要登錄的遠(yuǎn)程服務(wù)器。因此,關(guān)系也可能是這樣的;一把私鑰對一把公鑰放置在許多服務(wù)器中。
另一個有權(quán)訪問公鑰的人并不意味著他/她可以解密消息。只有擁有私鑰的用戶才能解密消息。公鑰僅用作加密消息的一種方式,消息只能由擁有私鑰的人解密。可以肯定地說,私鑰不能從公鑰中導(dǎo)出。因此,公鑰無法解密它發(fā)出的消息,甚至無法解密私鑰加密的消息。
因此,如果用戶使用 SSH 密鑰進(jìn)行身份驗(yàn)證(而不是手動輸入密碼),服務(wù)器將向用戶發(fā)送加密的質(zhì)詢語句,然后用戶將使用私鑰解密消息,然后將其發(fā)送回遠(yuǎn)程服務(wù)器進(jìn)行檢查。然后服務(wù)器將驗(yàn)證消息是否被正確解密,如果它與之前的質(zhì)詢語句匹配,則客戶端通過身份驗(yàn)證。
基本上,遠(yuǎn)程 SSH 服務(wù)器正在測試客戶端是否具有與該遠(yuǎn)程服務(wù)器上的公鑰相關(guān)聯(lián)的正確私鑰。如果客戶端能夠證明它擁有正確的私鑰,那么客戶端就通過了身份驗(yàn)證。
為什么使用 SSH 密鑰而不是密碼進(jìn)行身份驗(yàn)證?
不可否認(rèn),使用 SSH 公鑰進(jìn)行身份驗(yàn)證比使用密碼進(jìn)行身份驗(yàn)證的主要優(yōu)勢在于安全性。無論密碼有多長或多復(fù)雜,它永遠(yuǎn)不能等同于 SSH 公鑰提供的加密強(qiáng)度。密碼容易受到惡意用戶的暴力攻擊,或者更糟的是,密碼甚至可以被知道可用于找回密碼的用戶個人信息的人猜測。
此外,使用 SSH 公鑰還可以消除用戶必須記住或?qū)懴聫?fù)雜密碼的需要。如果用戶需要多次訪問遠(yuǎn)程服務(wù)器而無需在每次登錄時(或會話因空閑時間斷開連接時)多次輸入密碼,公鑰身份驗(yàn)證還允許非交互式登錄,因?yàn)橐约白詣踊枰獊碜赃h(yuǎn)程機(jī)器的身份驗(yàn)證的過程。
最佳實(shí)踐
但是,如果私鑰沒有保存在安全的地方,那么上述所有優(yōu)點(diǎn)都毫無意義。為了提高安全性,建議將私鑰存儲在智能卡或 USB 令牌等加密設(shè)備上,而不是將私鑰存儲在硬盤上,這樣如果未經(jīng)授權(quán)的用戶惡意用戶無法訪問它獲得對計(jì)算機(jī)的訪問權(quán)限。此外,可以使用密碼加密私鑰。但這僅適用于交互式登錄(對于非自動化任務(wù)),因?yàn)樗赡苄枰粋€人輸入密碼才能使用私鑰。
由于創(chuàng)建一對 SSH 密鑰需要最少的工作,通常情況下,不必要地生成或重新生成密鑰(在許多情況下,自行配置)只是為了解決小問題。如果任其發(fā)展,這可能會導(dǎo)致無法管理的混亂,其中有許多公鑰卻不知道它們與誰相關(guān)聯(lián),也不知道該人是否仍被授權(quán)訪問服務(wù)器。