使用 pysftp 驗證主機金鑰
本文解決了使用 pysftp 根據known_hosts 檔案驗證 SSH 主機金鑰時遇到的問題。最初的錯誤是由於 pysftp 在指定位置找不到主機金鑰而發生的。
放棄 pysftp 並替代使用 Paramiko
pysftp 庫存在以下已知錯誤主機密鑰處理,建議直接使用Paramiko。 Paramiko 為 SSH 連線提供強大且支援良好的 API,包括主機金鑰驗證。
使用 Paramiko 管理主機金鑰
Paramiko 允許對主機進行細粒度控制使用 CnOpts 類別進行金鑰管理。透過設定 cnopts.hostkeys,您可以管理受信任的主機金鑰,並向程式庫提供目標主機所需的金鑰。
從已知主機檔案載入主機金鑰(建議)
最安全的方法是使用包含受信任主機的公鑰的已知主機檔案。該檔案通常位於 Unix 系統上的 ~/.ssh/known_hosts 中。 CnOpts 類別提供了從此檔案載入主機金鑰的便捷方法。
手動新增主機金鑰(不建議)
作為一種不太安全的替代方案,您可以新增使用 HostKeys 類手動主機金鑰。這需要從已知的主機檔案中提取主機金鑰或使用 SSH 直接從伺服器取得它。
使用 ssh-keyscan 公用程式進行遠端主機金鑰擷取
ssh-keyscan 公用程式可用於以所需格式擷取遠端伺服器的主機金鑰。但是,請注意,如果伺服器使用非標準端口,則此方法不起作用。
使用AutoAddPolicy 自動新增主機金鑰(注意)
如果您想要pysftp要自動將新主機的主機金鑰新增至known_hosts,您可以使用AutoAddPolicsftp要自動將新主機的主機金鑰新增至known_hosts,您可以使用AutoAddPolicsfy類。不過,在建立信任之前,請務必謹慎行事並獨立驗證主機金鑰。
取得主機金鑰指紋進行指紋驗證
為了絕對安全,建議使用手動取得主機金鑰指紋並直接驗證,而不是依賴遠端擷取。
以上是使用 pysftp 或 Paramiko 時如何正確驗證 SSH 主機金鑰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!