Openssh
sshd 身份驗證過程是如何工作的?
在 sshd(8) 手冊頁中:
OpenSSH SSH 守護程序僅支持 SSH 協議 2。每個主機都有一個特定於主機的密鑰,用於標識主機。每當客戶端連接時,守護程序都會使用其公共主機密鑰進行響應。**客戶端將主機密鑰與自己的數據庫進行比較,以驗證它沒有更改。前向保密是通過 Diffie-Hellman 密鑰協議提供的。該密鑰協議產生共享會話密鑰。**會話的其餘部分使用對稱密碼進行加密。
(由我強調)
有人可以向我解釋身份驗證過程是如何工作的嗎?我認為:
- 每個主機都有一個唯一的 ssh 密鑰(公共和私有)
- 當客戶端連接到伺服器時,sshd 守護程序為客戶端提供公鑰
- 客戶然後做一些我不明白的事情
- 之後,該會話的其餘部分被加密。
我對麼?有人可以詳細解釋一下客戶端將主機密鑰與自己的數據庫進行比較以驗證它沒有更改是什麼意思嗎?
有人可以詳細解釋一下客戶端將主機密鑰與自己的數據庫進行比較以驗證它沒有更改是什麼意思嗎?
當您
ssh
進入(以前未知的)機器時,您將獲得以下查詢(例如 ECDSA 類型的密鑰):ssh user@newhost: The authenticity of host 'newhost (<IP-address>)' can't be established. ECDSA key fingerprint is SHA256:<fingerprint>. Are you sure you want to continue connecting (yes/no/[fingerprint])?
回答時
yes
:Warning: Permanently added 'newhost,<fingerpint>' (ECDSA) to the list of known hosts.
主機指紋現在添加到文件中
~/.ssh/known_hosts
(預設位置)。對於未來的連接,主機可以用這個指紋唯一標識,因此不會出現對話。但是,如果主機未能這樣做,您將收到有關主機更改的警告。這是為了確保沒有人可能只是擷取主機、重定向域等,而您作為
ssh
-client 沒有收到有關此的警告。將其與您手動接受一次的網站證書進行比較,如果它發生更改,則該網站被標記為不安全。