為什麼 Keychain 會顯示 id_rsa.pub 缺失?
我正在閱讀這篇關於在 Duplicity 中設置無人值守備份的文章。
我在稱為 7.2 的部分。SSH 密鑰記憶體
我已將以下內容添加到我的根目錄
.bash_profile
keychain --clear id_rsa . /root/.keychain/www-sh
文章指出鑰匙串應該啟動,並且此時我應該被要求為我的私鑰 (/root/.ssh/id_rsa) 提供我的密碼。
我在這裡沒有得到預期的結果,雖然鑰匙串確實開始了,但此時它會發出一些警告:
KeyChain 2.6.8; http://www.gentoo.org/proj/en/keychain/ Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL * Found existing ssh-agent (2014) * ssh-agent: All identities removed. * Warning: /root/.ssh/id_rsa.pub missing; can't tell if /root/.ssh/id_rsa is loaded root@www:~#
我在Gentoo 論壇中發現了一些提及這一點,但該執行緒的使用者似乎對為什麼要請求 keychain 感到困惑,
id_rsa.pub
我想知道是否有人知道為什麼 keychain 會請求公鑰。
我坦率地承認,我對鑰匙串的內部工作原理一無所知,但是本地 ssh 代理應該因為沒有與其擁有的私鑰相對應的公鑰而感到不安,這是完全合理的。
考慮當您接近遠端伺服器進行身份驗證時會發生什麼。遠端伺服器從其
authorized_keys
文件中知道它已準備好接受一個客戶端,該客戶端可以證明它具有其中每個條目的相應私鑰。但它是如何向客戶提出要求的呢?它不能給每個私鑰本身,也不能給它任何屬性,因為它沒有它;它所能做的就是提供它將接受的公鑰或指紋。如果客戶端擁有這些公鑰中的任何一個,它可以立即選擇匹配的私鑰,並做出伺服器將接受為正確的響應。如果它沒有那些公鑰,那該怎麼辦?依次嘗試其曲目中的每個私鑰?幾乎無法想像有更好的不安全資訊披露方法;黑帽只需要對單個新連接設置中間人攻擊,即可從您的密鑰環中的每個密鑰中獲取合法響應。
密鑰對可能具有某種內部編號,但這完全是武斷的,而且不明智。沒有保證將私鑰和公鑰綁定在一起的內部屬性,因為密鑰對中的密鑰不共享任何內容,除了一個(希望)是唯一可以撤消另一個實體的實體。
不,客戶端選擇正確的私鑰用於任何給定伺服器的最佳方法是擁有匹配的公鑰來幫助它選擇密鑰。