SFTP Chroot用户安装S3存储桶

时间:2015-11-09 22:37:27

标签: amazon-web-services amazon-s3 amazon-ec2 sftp s3fs

我正在尝试使用Amazon EC2服务器作为我的SFTP服务器,我可以创建经过身份验证的用户sftp到我的服务器。我已经使用s3fs为每个用户在位置/ mnt / buckets / {username}的服务器上安装了s3存储桶。读取/写入/ mnt / buckets / {username}目录可以按预期使用s3。

我的sshd_config有以下内容。

ChrootDirectory /mnt/buckets/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

当SFTP-ing我收到以下回复时

...
debug1: Authentication succeeded (publickey).
Authenticated to ec2-54-173-113-164.compute-1.amazonaws.com ([54.173.113.164]:22).
debug2: fd 5 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
Write failed: Broken pipe
Connection closed

挂载的存储桶具有这些权限。

/home/ubuntu# ls -l /mnt/buckets/
total 1
drwxrwxrwx 1 root root 0 Jan  1  1970 sftptester

当我将Chroot目录更改为/ mnt / buckets时,我可以登录到sftp服务器以及读取和写入s3挂载的存储桶

我可以将用户chroot到一个已安装的s3存储桶吗?

(如果有任何具有此功能的工具,我也有兴趣了解它们)

1 个答案:

答案 0 :(得分:1)

问题可能是在mount文件夹中显示为用户目录的S3“存储桶文件夹”没有正确的权限供SFTP用户读取。

尝试将此添加到您的S3FS执行-o umask=022。这会将以下权限添加到您的SFTP用户文件夹:drwxr-xr-x

示例: sudo s3fs bucket-name / mount / folder / -o iam_role = role_name -o allow_other -o stat_cache_expire = 10 -o enable_noobj_cache -o enable_content_md5 -o umask = 022

  • -o allow_other-o umask=022对我来说都是必需的。