我希望尽可能地保证安全。这意味着,我只在默认端口之外使用安全 ssh,并使用证书密钥进行身份验证。它与 Winscp 配合使用,我需要证书和证书密码才能登录。
现在我想为 wordpress 设置一个安全的 sftp。正如我所提到的,如果要为用户使用 chroot,他的 ChrootDirectory 必须是 root:root,对吗?所以它不能是 /var/www/html/webpage/public_html 目录。我不能使用 sftpuser(或组)并将他的主目录设置为 /var/www/html/webpage/public_html。
如何修复?如何使用 sshonly 用户和 chroot 目录从 wp 安装 wordpress 插件、主题等?ChrootDirectory 是否有排除子目录的选项?如果我使用 /home/user 作为 chrooted 目录,我可以授予 /home/user/A 访问权限但拒绝 /home/user/B 吗?
我无法使用 sshd 实现我的目标。wp 页面上有类似这样的内容:
define( 'FTP_BASE', '/path/to/wordpress/' );
define( 'FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/' );
define( 'FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/' );
define( 'FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub' );
define( 'FTP_PRIKEY', '/home/username/.ssh/id_rsa' );
define( 'FTP_USER', 'username' );
define( 'FTP_PASS', 'password' );
define( 'FTP_HOST', 'ftp.example.org' );
define( 'FTP_SSL', false );
据我了解,它允许 wordpress 使用 PHP 通过 ftp/sftp 连接,而不使用 ssh?
那么,为什么当我提供选项 DIRECT 并将用户名更改为错误的用户名时 - WP 会毫无问题地安装主题?
它不能正常工作吗?
答案1
SSH 服务器:
将 ssh 移至其他端口并不能使其更安全,您只能避免自动扫描程序和脚本(日志文件中的垃圾邮件较少),仅此而已。要使 ssh 更安全,请禁用 root 登录,禁用密码登录并仅允许来自受信任 IP 地址的 ssh。如果您没有静态 IP 地址,您可以阻止不需要的区域(亚洲、非洲等...)
FTP 服务器:
ChrootDirectory 不是属于 root 用户的目录,而是用户将登录的目录。您一定要创建 ftp 帐户并将其 chroot 到目录 /var/www/html/webpage/public_html。然后将 ftp 用户的默认组更改为 www-data(或您在 public_html 文件夹中的其他组),以便用户访问那里的文件。
WordPress的:
您不需要 ftp 来安装更新/插件。您可以将其更改为直接,并确保 wordpress (apache/nginx/php) 对文件夹插件具有写入权限或授予其 777 权限:
sudo chmod -R 777 wp-content/plugins