2015-10-20 71 views
11

我沒有一個.ssh目錄中,直到我跑在known_hosts中實際是什麼?

ssh [email protected]

這創造了一個.ssh目錄有一個文件known_hosts

它有一些像這樣的文字。

foo.com,107.180.00.00 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff 

我以爲這可能是我的服務器拉或公共或私人鑰匙一些如何,但事實並非如此。

這是什麼,它用於什麼?

我只是想了解更多關於ssh以及它是如何工作的。例如,在這種情況下,我沒有在本地機器上設置私鑰,所以它按照預期提示輸入密碼。

研究

它的假設是根據

https://security.stackexchange.com/questions/20706/what-is-the-difference-between-authorized-key-and-known-host-file-for-ssh

+0

*但事實並非如此*你爲什麼想?你有沒有閱讀'sshd(8)'的手冊頁,其中包含這個文件的描述和格式? – Jakuje

回答

3

要添加到上面的答案,你的評論, 有用於SSH會話四個組成

  1. 加密(對稱密鑰後得出數據完整性(MAC使用例如SHA,HMAC)
  2. 密鑰交換方法
  3. 公鑰方法或主機密鑰方法

的SSH算法協商涉及的密鑰交換狀態機 發送與算法列表沿SSH_MSG_KEXINIT消息時開始。

密鑰交換方法或簡單kex指定發送到客戶端的加密和主機驗證主機公鑰的會話密鑰(ssh-rsa,ssh-dss ..)。下面的步驟是發生用於KEX的基本步驟使用迪菲 - 赫爾曼密鑰交換算法

引述RFC https://tools.ietf.org/html/rfc4253

以下步驟用於交換的密鑰。在這裏,C是 客戶端; S是服務器; p是一個很大的安全素數; g是針對GF(p)的子羣的發生器 ; q是小組的順序; V_S是S的 標識字符串; V_C是C的標識字符串; K_S是S的 公共主機密鑰; I_C是C的SSH_MSG_KEXINIT消息,I_S是S的 SSH_MSG_KEXINIT消息,已在此部分 開始之前進行了交換。

  1. Ç產生一個隨機數x(1 < X < Q),並計算 = G^x的模p。 C發送e至S.

  2. S生成隨機數y(0 <和< q)並且計算 f = g^y mod p。 S收到e。它計算K = e^y mod p, H =散列(V_C || V_S || I_C || I_S || K_S || e || f || K) (這些元素根據它們的類型進行編碼;參見下面), 和H上的簽名與它的私人主機密鑰。 S將 (K_S || f || s)發送給C.簽名操作可能涉及第二次散列操作。

  3. C驗證K_S確實是S的主機密鑰(例如,使用 證書或本地數據庫)。 C也被允許接受 未經驗證的密鑰;然而,這樣做會使協議對主動攻擊不安全(但在許多環境中短期內可能需要 實際原因)。 C然後 計算K = f^x mod p,H = hash(V_C || V_S || I_C || I_S || K_S || e || f || K),並驗證H上的簽名s。

在某些系統在第三步中提到的本地數據庫可能是你的.ssh/known_hosts文件。 所以要回答你的問題,密鑰交換期間主機將公鑰發送給客戶端。

下列公共密鑰和/或證書格式目前定義:

SSH-DSS所要求的標誌原始DSS鍵

支持SSH-RSA推薦標誌原始RSA密鑰

PGP-SIGN -rsa可選符號OpenPGP證書(RSA密鑰)

pgp-sign-dss可選符號OpenPGP證書(DSS密鑰)

+0

簡而言之,我不必在任何時候生成此密鑰,它是通過您發佈的鏈接指定的協議完成的? –

+0

是如果您是ssh客戶端,則不需要生成主機密鑰 – cmidi

6

服務器的公鑰這個文件,有效,您的個人證書頒發機構。它是您確定的所有SSH服務器主機密鑰的準確列表。 known_hosts中的每個條目都是一個帶有三個或更多個空白分隔字段的大行,如下所示:

a。一個或多個服務器名稱或IP地址,通過逗號連接在一起。

foo.com,107.180.00.00

灣密鑰的類型。

ssh-rsa

℃。公鑰數據本身編碼爲保持在ASCII範圍內。

AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff

d。任何可選的評論數據。

也!! 這個線程可能是有用的你:

https://security.stackexchange.com/a/20710

+2

但是它從哪裏得到這個公鑰? –