本质上,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文件所带来的安全问题。