我正在尝试使用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存储桶吗?
(如果有任何具有此功能的工具,我也有兴趣了解它们)
答案 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
对我来说都是必需的。