為什麼 ssh 不總是要求我驗證服務器的密鑰指紋?

為什麼 ssh 不總是要求我驗證服務器的密鑰指紋?

有時,當我透過 SSH 連線到不在我的已知主機檔案中的伺服器時,ssh 會向我顯示以下訊息:

無法確定主機「[domain] ([ip_address])」的真實性。
RSA金鑰指紋是[指紋]。
您確定要繼續連線嗎(是/否)?

如果我選擇“是”,則會收到以下訊息:

警告:已將「[域]」(RSA) 永久加入到已知主機清單中。

但對於其他一些伺服器(例如 github.com),我不會提示繼續,而是我立即地收到以下訊息,其措詞略有不同:

警告:已將 IP 位址「[ip_address]」的 RSA 主機金鑰永久新增至已知主機清單。

是什麼導致了這種行為差異?更重要的是,當我不是提示,在繼續使用伺服器之前,是否需要手動檢查已新增至known_hosts檔案中的金鑰?

在這兩種情況下,我都透過公鑰進行身份驗證。我運行的是 OS X 10.10.3,使用系統安裝的 OpenSSH。

答案1

這可能是由於這些網站將 ssh 指紋儲存在 DNS 中,因此它們不再打擾使用者驗證金鑰。

此功能稱為 SSHFP 記錄。您可以使用以下方法驗證這一點ssh-keygen -r github.com

答案2

原來我只是個白痴。

同時,正如 Jakuje 所說,SSHFP 確實允許網站將其公鑰指紋儲存在其 DNS 記錄中,在本例中為金鑰曾是已經在網域下的已知主機檔案中(我透過將-v偵錯標誌新增至ssh命令中發現了該檔案)。

正如我收到的資訊訊息所解釋的那樣,新行已添加到文件中對於正在使用的 IP 位址

相關內容