問題描述
配置 WordPress 在應用程序 (即 WordPress) 中進行更新是理想的,因為它的方便。不過,我對這些要求感到困擾。在 installing ssh2 for php 之後出現的請求字段不僅要求我的公鑰,還要求我的私鑰。我會認為,最多隻需要公鑰。
WordPress 實際上是否給我的私鑰給服務器,以便服務器可以將正確的軟件包上傳到我的服務器?我熟悉 SSH 私有/公鑰如何工作,這就是為什麼我很困惑為什麼 WordPress 需要這個。如果有什麼,我會認為更新的機制甚至不需要這個協議; 它只會使用 http 或 ftp 到包服務器,然後從那裏下載/安裝/激活。
為什麼 WordPress 需要我的 ssh 密鑰?這裏有安全性嗎?
最佳解決方案
本質上,WordPress 需要連接回實際運行的服務器。
WordPress 可以使用幾種可能的方式來編寫文件,因此在升級過程中可以使用”overwrite” 本身。從安全角度來看,這個過程的重要部分是新文件必須與舊文件具有相同的所有權。
因此,WordPress 首先通過直接寫入文件並檢查結果所有者是誰執行測試。如果所有者匹配 PHP 文件,那麼它知道它可以編寫具有正確所有權的文件 (這意味着該進程是文件所有者的”setuid”) 。
如果生成的文件由不同的用户標識 (如果 Apache /PHP 以不同的用户身份運行,如”www” 或”apache” 用户) 擁有,則 WordPress 必須使用不同的方法創建具有正確所有者的文件。
一種方法是簡單的 FTP 。如果將 FTP 連接恢復到其所在的服務器,然後通過該文件寫入文件,則所生成的文件將由通過 FTP 登錄的人員擁有。所以,它提示用户 FTP 信息。
但 FTP 不是很安全。所以如你所見,另一種方法是通過 SSH2 。使用 SSH 庫為 PHP,它可以使 SSH 連接以相同的方式返回服務器。這就是為什麼它需要一個私鑰,因為它正在使用它來使一個傳出的連接回到自身。通過進行該連接,它可以設置憑據,並以具有這些憑據的用户的身份寫入文件。
如果你擔心它有這些鍵,然後生成一組新的鍵,並專門用於此目的。
為了回答你的直接問題,不,WordPress 不會”give” 的鑰匙在任何地方。它下載升級包,解壓縮它,然後使用這些鍵將連接重新連接到自己的服務器 (基本上是 loopback),然後通過該連接複製文件。在這樣做時,憑據意味着文件獲得正確的所有權,並避免使主要由 Apache /www /php 進程擁有的 WordPress 文件的安全問題。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。