我在 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);
应该管用