Ssh

需要SSH-RSA公鑰認證說明

  • April 25, 2021

我最近將我的工作站-Fedora 31 升級到了 Fedora 34。因為它通常在升級後發生,一些 ssh 算法已經過時,我必須在 .ssh/config 中添加額外的行,我可以在安全方面盡我最大的努力。

這次 ssh-rsa 術語讓我很困惑。我有舊的 RSA 公鑰,例如它可以授權我的 o​​penssh 客戶端對抗 Debian 10、Debian 8 和 Cisco 4k 路由器。

升級後,我必須PubkeyAcceptedKeyTypes +ssh-rsa為大多數舊主機添加 .ssh/config,在這種情況下,它將是 Debian 8 和 Cisco 4k 路由器。現在我可以像以前一樣登錄了。但 Cisco 4k 記錄了一條消息:

Public-key Algorithm compliance violation detected.Kindly note that weaker Public-key Algorithm 'ssh-rsa' will be disabled

以下是我的問題:

  1. 如果 Cisco 4k 允許比 ssh-rsa 更高的 PK,為什麼它不適用於預設 ssh 設置?
  2. 密鑰類型“ssh-rsa”和允許的 PK 算法之間是否有任何联系,例如,公鑰類型是否通過密鑰長度或其他任何方式限制允許的算法?
  3. 此身份驗證始終稱為 ssh-rsa,但如果我必須手動將其添加到配置 - 預設情況下使用什麼真正的 PK 身份驗證?它是一種 ssh-rsa 還是其他類型?
  4. 有什麼方法(我嘗試過 ssh 調試和 sshd 調試)來清楚地了解伺服器和客戶端支持哪些 PK 算法,就像我們對密碼所做的那樣?

更新:

關於 Cisco 4k 路由器的新資訊:預設情況下 Cisco 支持主機密鑰算法:rsa-sha2-512,rsa-sha2-256,ssh-rsa

我已添加PubkeyAcceptedKeyTypes +rsa-sha2-512並且可以登錄,但仍然收到有關 ssh-rsa 的警告。

將 rsa-sha2-512 視為一種 ssh-rsa(因為它們都在最近的 openssh 中被丟棄),我的其他問題是:

  1. 路由器聲明是否似乎將 ssh-rsa 稱為任何類型的 ssh-rsa,包括 rsa-sha2-512?
  2. 路由器中啟用的主機密鑰算法是否似乎受到其他方式的限制?

對於背景…

關於 Security Stack Exchange上的主題有一個很好的答案,它連結到 openssh關於棄用 ssh-rsa 的註釋

似乎問題在於原始的 ssh-rsa 算法(在 RFC 4253 中描述)依賴於SHA-1,該算法現在在很大程度上已不再用於加密:

自 2005 年以來,SHA-1 一直被認為無法抵禦資金雄厚的對手。截至 2010 年,許多組織都建議更換它。NIST 在 2011 年正式棄用 SHA-1,並在 2013 年禁止將其用於數字簽名。截至 2020 年,針對 SHA-1 的選擇前綴攻擊是可行的。

但它是使用 SHA-1 的簽名算法,而不是密鑰本身。


考慮到這一點…

如果 Cisco 4k 允許比 ssh-rsa 更高的 PK,為什麼它不適用於預設 ssh 設置?

改變的是 openssh 預設不再允許 ssh-rsa。您所做的更改讓您的客戶接受ssh-rsa。所以路由器仍然接受它(即使它呻吟)。但是算法沒有嚴格的層次結構,只有一些比其他的“更好”。因此,允許“更高”算法並不意味著路由器和客戶端共享相同的“更高”算法。

另一個可能的原因是,雖然您的客戶端和路由器都共享“更好”的算法,但它們與原始 RSA 密鑰不兼容。例如:他們允許 ssh 證書,但您有密鑰但沒有證書。在這種情況下,您可以使用預設設置,但不能使用帶有預設設置的現有密鑰。

密鑰類型“ssh-rsa”和允許的 PK 算法之間是否有任何联系

從我能找到的關於這個話題的資訊來看,是的。它們的算法可以限制為單一密碼,但通常不太關心密鑰長度。鑰匙基本上只是

$$ some $$非常大的數字。它們有多大並不重要,但算法需要知道如何處理它們。

有什麼方法(我嘗試過 ssh 調試和 sshd 調試)來清楚地了解伺服器和客戶端支持哪些 PK 算法,就像我們對密碼所做的那樣?

雖然它有點神秘,但它可用於 openssh 級別 2 調試 ( -vv)。你會看到debug2: KEX algorithms: ...debug2: host key algorithms: ...。您還應該看到選擇了哪種算法。-vvv如果您想更深入地研究,還有一個三級調試 ( )。

引用自:https://unix.stackexchange.com/questions/646572