我在我的live服务器上使用WordPress,它只使用SSH密钥的SFTP。

我想安装和升级插件,但似乎需要输入FTP登录来安装插件。有没有一种方法可以通过手动上传文件来安装和升级插件,而不是让WordPress来处理整个过程?


当前回答

您可以拥有fileZilla并使用FTP帐户来更新插件和主题。或者你可以登录到Cpanel并访问wordpress文件夹,然后你可以通过解压缩主题或插件来更新主题。

其他回答

设置ftp或SFTP连接或chmod 777是除了本地环境以外的任何方法。即使打开SFTP方法也会带来更多不必要的安全风险。

所需要的是这些目录的所有者对/wp-content/uploads & /wp-content/plugins/的可写权限。(linux ls -la将显示你的所有权)。

apache默认运行用户为www-data。

Chmod 777允许机器上的任何用户编辑这些文件,而不仅仅是apache/php线程用户。

如果您还没有使用SFTP,它将从外部来源引入另一个可能的故障点。而你只需要本地用户运行apache/php进程就可以完成这个目标。

没有看到任何人提出这些观点,所以我想我将提供这些信息,以帮助解决我们不断出现的在线WP安全问题。

只是想补充一点,你绝对不能将wp-content权限或任何文件夹的权限设置为777。

这就是我必须要做的:

1)我将wordpress文件夹的所有权(递归地)设置为apache用户,如下所示:

# chown -R apache wordpress/

2)我将wordpress文件夹的组所有权(递归)更改为apache组,如下所示:

# chgrp -R apache wordpress/

3)赋予目录所有者完全权限,如下所示:

# chmod u+wrx wordpress/*

这就成功了。顺便说一句,我的wp-content文件夹有755个权限。

TL;博士版:

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*

为了能够使用SSH2进行更新和主题上传,您必须生成SSH密钥并安装PHP SSH模块。然后WordPress会检测到你有SSH2可用,当你上传/升级时,你会看到一个不同的选项(SSH2)。

1)。确保你为debian安装了PHP模块,它是:

sudo apt-get install libssh2-php

2)。生成SSH密钥,可选添加密码短语:

ssh-keygen
cd  ~/.ssh
cp id_rsa.pub authorized_keys

3)。更改权限,以便WordPress可以访问这些密钥:

cd ~
chmod 755 .ssh
chmod 644 .ssh/*

现在当你上传/升级/插件时,你会得到SSH2选项。

4)。为了更方便,你可以在wp-config.php中设置默认值,这将在WordPress上传窗口中预先填充SSH凭据。

define('FTP_PUBKEY','/home/<user>/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/<user>/.ssh/id_rsa');
define('FTP_USER','<user>');
define('FTP_PASS','passphrase');
define('FTP_HOST','domain.com');

'passphrase'是可选的,如果你在ssh-kengen期间没有设置一个passphrase;然后不要在wp-config.php中添加它

这解决了我的问题。而且我根本不用嚼东西。但我在其他地方看到过这种方法。

引用:

http://wp.tutsplus.com/articles/tips-articles/quick-tip-upgrade-your-wordpress-site-via-ssh/ http://codex.wordpress.org/Editing_wp-config.php#Enabling_SSH_Upgrade_Access

如果WordPress不能直接写入/wp-content,它只会在安装插件或WordPress更新时提示您输入FTP连接信息。否则,如果您的web服务器具有对必要文件的写访问权,它将自动负责更新和安装。这种方法不需要你有FTP/SFTP或SSH访问权限,但它需要你在你的web服务器上设置特定的文件权限。

它将按顺序尝试各种方法,如果Direct和SSH方法不可用,则退回到FTP。

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress会尝试写一个临时文件到你的/wp-content目录。如果成功,它会将文件的所有权与它自己的uid进行比较,如果有匹配,它将允许你使用“直接”方法安装插件、主题或更新。

现在,如果出于某种原因,你不想依赖于自动检查使用哪个文件系统方法,你可以在你的wp-config.php文件中定义一个常量,'FS_METHOD',即'direct', 'ssh', 'ftpext'或'ftpsockets',它将使用该方法。请记住,如果您将此设置为“direct”,但您的web用户(web服务器运行的用户名)没有适当的写权限,您将收到一个错误。

总之,如果你不想(或你不能)改变wp-content的权限,这样你的web服务器就有写权限,那么把这个添加到你的wp-config.php文件中:

define('FS_METHOD', 'direct');

权限说明如下:

http://codex.wordpress.org/Updating_WordPress#Automatic_Update http://codex.wordpress.org/Changing_File_Permissions

使用SSH安装插件的最佳方式是WPCLI。

注意,要使用WP CLI命令,SSH访问是必须的。在使用它之前,请检查您的主机服务器或机器上是否安装了WP CLI。

如何检查:wp——version[它将显示已安装的wp cli版本]

如果没有安装,如何安装: 在安装WP-CLI之前,请确保环境满足最低要求:

类unix环境(OS X, Linux, FreeBSD, Cygwin);Windows环境下有限的支持。 PHP 5.4或更高版本 WordPress 3.7或更高版本。比最新WordPress版本旧的版本可能会降低功能

如果以上几点满足,请按照以下步骤进行操作:参考URL: WPCLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[ download the wpcli phar ]

php wp-cli.phar --info [ check whether the phar file is working ]

chmod +x wp-cli.phar [ change permission ]
sudo mv wp-cli.phar /usr/local/bin/wp [ move to global folder ]
wp --info [ to check the installation ]

现在可以安装WP CLI了。

现在你可以在WordPress.org中使用以下命令安装任何插件:

wp install plugin plugin-slug
wp delete plugin plugin-slug
wp deactivate plugin plugin-slug

注意:wp cli只能安装那些在wordpress.org中可用的插件