我已经关注本教程(在我使用的几个 VPS 上都有效)配置一种安全的方式来安装和更新 Wordpress 中的主题和插件。基本上:
sudo adduser wp-user
cd /var/www
sudo chown -R wp-user:wp-user /var/www/
sudo su - wp-user
ssh-keygen -t rsa -b 4096
exit
sudo chown wp-user:www-data /home/wp-user/wp_rsa*
sudo chmod 0640 /home/wp-user/wp_rsa*
sudo mkdir /home/wp-user/.ssh
sudo chown wp-user:wp-user /home/wp-user/.ssh/
sudo chmod 0700 /home/wp-user/.ssh/
sudo cp /home/wp-user/wp_rsa.pub /home/wp-user/.ssh/authorized_keys
sudo chown wp-user:wp-user /home/wp-user/.ssh/authorized_keys
sudo chmod 0644 /home/wp-user/.ssh/authorized_keys
sudo nano /home/wp-user/.ssh/authorized_keys
来自“127.0.0.1” ssh-rsa ...
sudo apt-get update
sudo apt-get install php5-dev libssh2-1-dev libssh2-php
sudo nano /var/www/wp-config.php
添加:
define('FTP_PUBKEY','/home/wp-user/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:22');
最后:
sudo service apache2 restart
出于某种原因,我收到以下消息:
wp-user 的公钥和私钥不正确
寻找答案,我见过这个问题,但这些答案对我都不起作用。
首先,我将文件放入/home/wp-user
目录中,但也尝试放入/home/wp-user/.ssh
。这是我现在所拥有的:
ls -la /home/wp-user/.ssh
drwx------ 2 wp-user wp-user 4096 Mar 1 15:02 .
drwxr-xr-x 3 wp-user wp-user 4096 Mar 1 14:58 ..
-rw-r--r-- 1 wp-user wp-user 742 Mar 1 15:02 authorized_keys
-rw-r----- 1 wp-user www-data 3247 Mar 1 14:58 wp_rsa
-rw-r----- 1 wp-user www-data 742 Mar 1 14:58 wp_rsa.pub
和:
define('FTP_PUBKEY','/home/wp-user/.ssh/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/.ssh/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:miCustomPortForSSH');
auth.log
每次尝试连接时我都能看到此输出:
Mar 1 14:37:51 vpsxxxx sshd[2430]: Set /proc/self/oom_score_adj to -800
Mar 1 14:37:51 vpsxxxx sshd[2430]: Connection from 127.0.0.1 port 56103
Mar 1 14:37:51 vpsxxxx sshd[2430]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
每次使用不同的端口:
Mar 1 14:38:16 vpsxxxx sshd[2435]: Set /proc/self/oom_score_adj to -800
Mar 1 14:38:16 vpsxxxx sshd[2435]: Connection from 127.0.0.1 port 56128
Mar 1 14:38:16 vpsxxxx sshd[2435]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
我使用 Apache2 和 Nginx 作为代理服务器,但日志文件没有显示任何内容。有什么想法吗?
答案1
私钥似乎太开放了,因为它是组可读的。尝试删除组读取权限
chmod g-r wp_rsa
看看情况如何。
答案2
如果您使用php_admin_value open_basedir指令,密钥需要位于列出的路径中包含的目录中。
答案3
在两台 Debian 10 服务器上,我必须-m PEM
向 ssh-keygen 添加参数。
否则,当我从终端使用 SSH 时,密钥可以工作,但它在 Wordpress 中不起作用,导致出现与您的日志中出现的相同的断开连接消息。相反,ssh-keygen -m PEM -t rsa
它没有任何问题。
另外,我必须allow_url_fopen = On
在 PHP 中启用,否则 Wordpress 无法找到 wp-content 目录。
答案4
我使用 www-data 作为所有者,在 wp-config.php 中添加以下行可以解决这个问题。
define( 'FS_METHOD', 'direct' );