SSH keygen: 完美指南供初學者使用
SSH(安全外殼)是安全地訪問遠端伺服器的必要工具。相較於使用密碼,SSH基於金鑰的認證方式提供了更強大的安全性,這是每位開發者必須掌握的知識。這篇文章將從SSH金鑰生成的基本概念到實際使用方法,以初學者的眼光,簡單而詳盡地為你解說。
為什麼需要SSH keygen?
傳統的密碼方式在輸入過程中存在被曝光的風險,並且對暴力破解攻擊相對脆弱。SSH金鑰通過使用一對金鑰(公鑰和私鑰)來解決這些問題。
- 私鑰:安全地存儲在用戶的電腦上,絕對不能被外部曝光。只有擁有此金鑰才能訪問伺服器。
- 公鑰:註冊在目標伺服器上的金鑰,即使公開也不會造成安全問題。
SSH連接時,伺服器會利用用戶的公鑰來加密認證請求,而用戶電腦的私鑰若能成功解密,則授予訪問權限。這樣一來,不需要傳送密碼就能安全地進行通訊。
生成SSH金鑰的方法:ssh-keygen
命令
生成SSH金鑰的基本命令是ssh-keygen
。開啟終端,輸入以下命令。
ssh-keygen
執行此命令後會出現幾個問題。我們逐一查看:
-
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
-
詢問憑證檔案的存儲路徑。如果沒有特殊理由,建議使用默認路徑
.ssh/id_rsa
。只需按Enter
即可。
-
-
Enter passphrase (empty for no passphrase):
-
詢問是否設置私鑰的密碼。為了加強安全性,建議務必設置密碼。設置密碼後,即使私鑰泄露,只要不知道密碼也無法使用,從而實現雙重保護。輸入密碼時終端將不會顯示任何信息,請確保準確輸入後按
Enter
。
-
-
Enter same passphrase again:
- 再次輸入之前的密碼以進行確認。
-
預期結果:
Your identification has been saved in /home/youruser/.ssh/id_rsa
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx youruser@yourmachine
The key's randomart image is:
+---[RSA 3072]----+
| .=*o. |
| . +.E+ |
| . o.=. . |
| o . o |
| . S . |
| . . |
| . |
| |
| |
+----[SHA256]-----+
金鑰生成完成後,會在~/.ssh/
目錄中創建兩個文件。
id_rsa
: 私鑰id_rsa.pub
: 公鑰
RSA與Ed25519:選擇哪種方式?
生成SSH金鑰時,可使用ssh-keygen
命令的-t
選項指定金鑰的加密方式。常用的方式有RSA和Ed25519。
1. RSA方式 (-t rsa
)
- 自SSH誕生以來便被廣泛使用。
- 已經過穩定性驗證,並與大多數系統兼容。
- 可以指定金鑰的長度,通常建議使用
4096
位。 - 示例:
ssh-keygen -t rsa -b 4096
2. Ed25519方式 (-t ed25519
)
- 更新的加密方式,基於Curve25519橢圓曲線加密。
- 相對於RSA,以更短的金鑰長度提供相同或更高水平的安全性。
- 金鑰生成與認證速度快,資源使用更少。
- 大多數最新系統支持,但某些非常舊的系統可能不兼容。
- 示例:
ssh-keygen -t ed25519
推薦的方式及理由
目前如果沒有特別的兼容性問題,強烈建議使用Ed25519方式。
- 更佳的安全性:即使是較短的金鑰長度也能提供強大的保護,使其對暴力攻擊更加抵抗。
- 更快的性能:金鑰生成與認證過程更高效。
- 簡單性:不必像RSA那樣考慮金鑰長度,可以輕鬆生成。
Ed25519金鑰生成示例
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_my_server -C "my_server_ssh_key"
-t ed25519
: 以Ed25519方式生成金鑰。-f ~/.ssh/id_ed25519_my_server
: 將金鑰檔案命名為id_ed25519_my_server
。(可以用不同的名稱來區分於已有的id_rsa
)-C "my_server_ssh_key"
: 為金鑰添加一個註釋,方便識別金鑰的用途,建議為其命名。
預期結果:
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): # 輸入密碼(建議)
Enter same passphrase again: # 確認密碼
Your identification has been saved in /home/youruser/.ssh/id_ed25519_my_server
Your public key has been saved in /home/youruser/.ssh/id_ed25519_my_server.pub
The key fingerprint is:
SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy my_server_ssh_key
The key's randomart image is:
+--[ED25519 256]--+
| .+=+ |
| . oE B |
| o + O |
| . + + |
| o . S |
| . = . |
| . B + |
| . * = o |
|+ o . = . |
+----[SHA256]-----+
現在你已經理解了如何生成和管理SSH金鑰的基本方法。將生成的公鑰(id_ed25519_my_server.pub
或id_rsa.pub
)註冊於遠端伺服器的~/.ssh/authorized_keys
檔案中,即可安全地訪問而不需密碼。在下一篇文章中,我們將深入探討如何在伺服器上註冊和使用生成的SSH金鑰。
若有任何問題,隨時可以在留言中詢問!
目前沒有評論。