我使用ssh-keygen -t rsa
來產生 RSA 金鑰對。我在id_rsa.pub
文件中看到用戶名和主機名稱。
但我想知道哪些元素會影響密鑰對。例如,如果我更改了主機ip,是否需要重新產生金鑰對?還有主機名稱?或甚至我重新安裝作業系統?
我什麼時候應該重新產生密鑰對?
答案1
密鑰是隨機產生的。就其起源而言,沒有什麼比這更特別的了。這意味著只要您持有私鑰,就無需更換它。
在SSH中,使用者密鑰通常用於標識使用者和來源系統的組合。這表示金鑰不會在同一系統上的使用者之間或多個系統上的相同使用者之間共用。
儘管這不是技術限制,因為您可以毫無問題地違反這些規則中的任何一個。這只是良好的安全實踐。
在公鑰 ( id_rsa.pub
) 中,最後一個欄位是註解。該ssh-keygen
命令通常將您的使用者名稱和主機名稱作為最後一個欄位。除了作為識別密鑰的註釋之外,這沒有其他目的。至於為什麼要放使用者名稱和主機名,請參考上一段。
直接回答您的問題「我什麼時候應該重新產生密鑰對?」:
當密鑰已洩露並且可能被其他人獲取時,您應該重新產生密鑰。此時,您也應該從所有信任它(檔案authorized_keys
)的遠端系統中撤銷先前的公鑰。
這確實是唯一的原因。如果您重新安裝作業系統、變更主機名稱等,則無需重新建立金鑰。如果你願意的話也可以。
答案2
從RFC4716我們知道其中的user@hostnameid_rsa.pub
只是一個註釋,它不會影響金鑰對的內容。
我認為用戶名是影響內容的元素之一,因為我使用兩個用戶在同一台主機上擁有不同的密鑰對:-)