为什么WordPress需要我的ssh私钥来更新?

时间:2013-09-17 作者:Avery Chan

将WordPress配置为在应用程序(即WordPress)中进行更新对我来说非常方便。尽管如此,我还是被这些要求所困扰。之后显示的请求字段installing ssh2 for php 不仅要询问我的公钥,还要询问我的私钥。我认为,最多只需要公钥。

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

Why does WordPress need my ssh keys? Are there security concerns here?

1 个回复
最合适的回答,由SO网友:Otto 整理而成

本质上,WordPress需要连接回它实际运行的服务器。

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

因此,WordPress首先通过直接写入一个文件并检查结果所有者是谁来执行测试。如果所有者与PHP文件匹配,那么它知道它可以编写具有正确所有权的文件(这意味着进程对于文件所有者来说是“setuid”)。

如果生成的文件由不同的用户id拥有(如果Apache/PHP作为不同的用户运行,如“www”或“Apache”用户,则WordPress必须使用不同的方法创建具有正确所有者的文件。

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

但是FTP不是很安全。正如您所发现的,另一种方法是通过SSH2。使用PHP的SSH库,它可以以相同的方式建立回服务器的SSH连接。这就是它需要私钥的原因,因为它使用私钥来建立与自身的传出连接。通过建立该连接,它可以设置凭据,并以拥有这些凭据的用户的身份写入文件。

如果您担心它是否拥有这些密钥,那么生成一组新的密钥并专门用于此目的。

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

结束

相关推荐

SSH Upgrade Problem

我总是犯同样的错误,有什么想法吗?我使用生成了一个没有密码的密钥ssh-keygen我将密钥权限设置为600,我已使用成功登录ssh -i /root/.ssh/id_rsa 1**.**.*8.128</我已尝试将主机名更改为localhost 和127.0.0.1服务器正在运行CentOS 5.4。