WordPress为什么需要我的私人ssh密钥进行更新?


13

配置WordPress以在应用程序(即WordPress)中更新对我来说非常理想,因为它很方便。但是,我对要求感到困扰。在为PHP安装ssh2之后显示的请求字段不仅问我的公钥,还问我的私钥。我认为最多只需要公用密钥。

WordPress实际上是否将我的私钥提供给服务器,以便该服务器可以将正确的软件包上传到我的服务器?我熟悉SSH私钥/公钥的工作方式,这就是为什么我困惑WordPress为什么需要这样做的原因。如果有的话,我认为更新机制甚至不需要此协议。它只会使用http或ftp到软件包服务器,然后从那里下载/安装/激活。

WordPress为什么需要我的ssh密钥?这里有安全问题吗?

Answers:


11

本质上,WordPress需要重新连接到实际运行的服务器。

WordPress有几种可能的方式来写入文件,从而在升级期间“覆盖”自身。从安全角度来看,此过程的重要部分是新文件必须具有与旧文件相同的所有权。

因此,WordPress首先通过直接编写文件并检查最终所有者是谁来执行测试。如果所有者与PHP文件匹配,则表明它可以写入具有正确所有权的文件(这意味着该过程对文件所有者是“ setuid”的)。

如果生成的文件由另一个用户ID拥有(如果Apache / PHP以另一个用户(例如“ www”或“ apache”用户)运行,则很可能会发生这种情况),那么WordPress必须使用其他方法来创建文件正确的所有者。

一种方法是简单的FTP。如果它通过FTP连接返回到已打开的服务器,然后在该服务器上写入文件,则通过FTP登录的任何人都将拥有生成的文件。因此,它提示用户输入FTP信息。

但是FTP并不是很安全。因此,您已经发现,另一种方法是通过SSH2。使用用于PHP的SSH库,它可以以相同的方式建立到服务器的SSH连接。而就是为什么它需要一个私钥,因为它使用的是使输出连接到它自身。通过建立连接,它可以设置凭据,并以具有那些凭据的用户身份写入文件。

如果您担心它具有这些密钥,请生成一组新密钥并将其专用于此目的。

要回答您的直接问题,不,WordPress不会在任何地方“提供”密钥。它将下载升级软件包,将其解压缩,然后使用这些密钥将连接建立回其自己的服务器(基本上是回送),然后通过该连接复制文件。这样,凭据意味着文件具有正确的所有权,并避免了由主要Apache / www / php进程拥有WordPress文件所带来的安全问题。


好答案。这减轻了我的担忧。这在任何地方都有记录吗?
艾利·陈

是的,尽管详细程度
Otto

当您说建立连接“回到自身”时。您是说PHP是FTP客户端,并且连接到运行该服务器的同一服务器吗?
dangel '16

是的,就是这样。
奥托
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.