系統範圍內的已知主機檔案?

系統範圍內的已知主機檔案?

我正在嘗試做一個 github-git拉以 www-data 使用者從 php 腳本中取得「主機金鑰驗證失敗」。我的主要用戶已註冊主機金鑰,但我的 www-data 沒有,因為它甚至沒有權限存取 ~/.ssh 目錄。

Ubuntu 18.04 下是否還存在系統範圍的已知主機檔案?我認為讓 www-data 用戶存取我的資料是不安全的〜/.ssh-目錄?

答案1

正如 @GMaster 所建議的,使用 HTTPS 而不是 SSH 進行自動拉取似乎是最明智的選擇。但是,如果您確實需要使用 ssh 協定(為什麼?),您有一些處理選項known_hosts和憑證:

  • 在 的主目錄中建立~/.ssh樹,包括預先填入的known_hosts, www-data(在我的系統中是/var/www,但請在 中檢查您的/etc/passwd)。您可以透過手動連線並驗證主機金鑰來自行建立該檔案。只需確保此類文件和目錄具有適當的權限(通常為 0700/0600)和所有權。

  • 將此文件放在其他地方(具有適當的權限),並使用指向它-o UserKnownHostsFile=/path/to/known_hosts

  • 對於上述兩種方法,請嘗試-o StrictHostKeyChecking各種選擇並-o UpdateHostKeys在安全性和便利性之間取得平衡。

  • 作為最後的手段,您可以在/var/www/.ssh/config命令列選項中或使用命令列選項完全停用 www-data 的主機金鑰驗證-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null。請注意這意味著嚴重的安全隱患。

並且,強化您已經懷疑的內容:在任何情況下都不要讓 www-data (或任何其他)用戶訪問您的~/.ssh.記住你的私人的鑰匙也在那裡!

答案2

是的,確實有一個系統範圍內已知的主機文件,預設是/etc/ssh/ssh_known_hosts.您可以運行man ssh_config並蒐索GlobalKnownHostsFile以查看系統上的預設值。-o如果您願意,您也可以像往常一樣變更此選項的值(使用)。

相關內容