允许 www-data 用户使用 scp/ssh

允许 www-data 用户使用 scp/ssh

我在 Amazon EC2 上使用 Ubuntu 10.04.2

我的 web 文件夹归 www-data 所有,所以我希望能够以 www-data 的身份登录到我的服务器进行 ssh 和 scp。

谢谢!

将该行添加到我的 /etc/ssh/sshd_config 似乎不起作用。

AllowUsers www-data

答案1

在 Ubuntu 所基于的 Debian 上,www-data 用户将 /bin/sh 作为默认 shell。要启用 SFTP,您可以创建/var/www/.ssh/authorized_keys包含公钥的文件。上的权限/var/www/.ssh应为 700,而 authorized_keys 文件的权限应为 600。您需要将以下内容添加到 http 配置中以禁止访问此目录。

<Directory /var/www/.ssh>
  Order Deny,Allow
  Deny from all
</Directory>

您可以使用 验证 www-data 用户设置(主目录、shell 等)getent passwd www-data

确保您的 sshd_config 有Subsystem sftp /usr/lib/openssh/sftp-server,并且您可能也想要设置PasswordAuthentication no

答案2

这有点不安全。我建议您使用另一个用户上传到中间区域,并cron时不时地运行一项作业,将内容移动到其所属的位置并相应地更改其权限。

如果您确实坚持以 身份登录www-data,则必须使用 ssh 私钥来执行此操作(据我所知,EC2 实例仅允许密钥身份验证)。您还必须检查 是否www-data具有有效的 shell/etc/passwd和有效的主目录。

最后,你也可以尝试一些解决方案这个问题

答案3

一个更简洁的方法是让你的“常规” SSH 帐户成为该组的成员,而不依赖cron作业来完成将文件放入文档根目录的实际工作www-data

# add your current user to www-data group
sudo usermod -a -G www-data myusername
# restore standard user/group ownership on your webserver documentroot
sudo chown -R root:www-data /path/to/your/webserver/documentroot

这样,myusername用户将拥有对 Web 服务器根目录的读/写访问权限。

答案4

以 www-data 身份登录 scp 很浪费时间。

对于 scp 命令,为什么不使用它ssh2_scp_send来传输文件,因为它很简单,不需要你添加 ssh 或为用户 www-data 创建公钥

例如

ssh2_scp_send($connection, '/directory/filename', '/remotedirectory/filename', 0644);

应该管用

相关内容