sftp 身份驗證:同時基於金鑰和密碼?

sftp 身份驗證:同時基於金鑰和密碼?

我可以在 sftp 伺服器上同時實作基於金鑰和基於密碼的身份驗證嗎?我希望伺服器首先進行基於金鑰的身份驗證。如果正確,則要求基於密碼的身份驗證。這可以實施嗎?

答案1

SFTP 幾乎總是(但不一定)使用 SSH 作為傳輸。身份驗證在 SSH 層級執行。因此,您正在尋找的選項屬於 SSH 伺服器的配置。

我假設是 OpenSSH。看man 5 sshd_config[強調我的]:

AuthenticationMethods

指定必須成功完成才能授予使用者存取權限的身份驗證方法。此選項後必須跟一個或多個以逗號分隔的身份驗證方法名稱列表,或後跟單個字串 any 以指示接受任何單一身份驗證方法的預設行為。如果覆寫預設值,則成功的身份驗證需要完成至少其中一個清單中的每種方法。

例如,publickey,password publickey,keyboard-interactive將要求用戶完成公鑰身份驗證,然後是密碼或鍵盤互動身份驗證。每個階段僅提供一個或多個清單中的下一個方法,因此對於此範例,不可能在公鑰之前嘗試密碼或鍵盤互動式身份驗證。

[…]

(邊註:password和有什麼區別keyboard-interactive

看來這個例子正是你想要的。

請注意,該設定不僅會影響 SFTP,還會影響 SSH 的每次使用。據我所知,您無法輕鬆地為 SFTP 使用與其他所有設定不同的設置,因為身份驗證發生在伺服器知道您需要 SFTP 之前。不過,伺服器足夠早地了解用戶,因此,如果您需要“僅限 SFTP 用戶”,那麼由於條件區塊(Match)。

更改設定檔後,您需要重新啟動 SSH 伺服器或以其他方式告訴它重新載入設定。sshdOpenSSH 在收到掛斷訊號 SIGHUP 後重新讀取其配置。

相關內容