SSH 身份驗證如何運作?

SSH 身份驗證如何運作?

我的問題是基於以下場景:serverAserverBuser1user2。兩個用戶都出現在兩台伺服器上。

user1onserverA已產生 SSH 金鑰對,並將公鑰複製到authorized_keys上的檔案中serverB

user2onserverA沒有產生 SSH 金鑰對,且 on 也沒有產生serverB

user1登入serverA.user1嘗試透過 SSH 連接到serverBas user2( ssh user2@serverb),它工作正常,不需要密碼。

我的問題是這樣的。這是如何運作的?user2上沒有公鑰serverB。我一直認為 SSH 會對嘗試登入的使用者進行身份驗證。這是否意味著 SSH on對serverB目前登入進行身份驗證?user1serverA

答案1

這聽起來根本不對。您使用 OpenSSH 嗎?或其他一些 ssh 實作?

回到你的問題,它是如何運作的,它正如你所期望的(簡化的):

  • 連接到遠端系統。
  • 透過用戶名。
  • 遠端系統驗證使用者是否存在並請求金鑰(如果配置了金鑰身份驗證)。
  • 檢查使用者 HOME/.ssh/authorized_keys 是否存在
  • 一項一項地檢查authorized_keys 中的條目,直到一項有效,或無一項為止。
  • 如果找到匹配的金鑰,則身份驗證成功。

這一切都基於目標使用者 ~.ssh/authorized_keys 檔案中的金鑰。如果沒有這樣的文件/金鑰,則某些東西會嚴重損壞。

答案2

在評論中,您提到了.rht_authorised key.

預設的每使用者授權金鑰檔案應該是~/.ssh/authorized_keys~使用者的主目錄。如果.rht_authorised使用,則表示正在使用非預設 OpenSSH 配置。

/etc/ssh/sshd_config可以(使用AuthorizedKeysFile關鍵字)為授權金鑰檔案定義不同的位置(或多個位置):如果將其定義為絕對路徑並且定義中沒有使用%h,%u或等標記%U,則所有使用者將使用相同的授權金鑰文件。

在較新的 OpenSSH 版本中,還有一個AuthorizedKeysCommand關鍵字,它定義一個程式或腳本,用於在驗證使用者身分時尋找公鑰。預設不使用它,但可能會在某些託管或雲端設定中使用。

報告什麼grep -i authorizedkeys /etc/ssh/sshd_config

相關內容