我想通过互联网与客户共享文件,并正在寻找 AWS 上的 ftp 解决方案。我尝试过 AWS SFTP,但设置角色策略很麻烦,而且对于我的基本用例来说,这项服务似乎有点昂贵。有没有其他方法可以在 EC2 或 S3 上设置非 AWS 用户可以访问的 ftp 服务器。我想为不同的用户添加对不同子目录的读取权限。我正在使用 macosx。
我尝试按照说明进行操作https://stackoverflow.com/questions/7052875/setting-up-ftp-on-amazon-cloud-server但不清楚如何允许非 aws 用户查看我的文件,而且我无法让 vsftpd 正常工作。
是否有推荐/标准的 aws 设置用于与非 aws 用户共享文件,最好是安全的 (sftp)。我每天都会与数百名用户共享几次更新的文件。
答案1
如果您不想使用 AWS Transfer for SFTP,则可以直接从 EC2 实例设置您的 SFTP 服务器。
如果你正确遵循这些说明,你应该能够非常轻松地创建 SFTP 用户。在我的具体案例中,我使用了带有 Ubuntu 18.04 的微型 T2 实例
- 让我们安装
openSSH
sudo apt-get install openssh-server
- 您需要创建一个特定的组来监禁该组用户。
sudo groupadd sftpusers
/etc/ssh/sshd_config
使用 vim 或 nano
编辑注释掉然后#Subsystem sftp /usr/lib/openssh/sftp-server
添加Subsystem sftp internal-sftp
以允许 SFTP 连接到你的服务器
最后,在文件末尾指定新的组配置
Match group sftpusers
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication yes
- 此时你的
/etc/ssh/sshd_config
表现应如下所示:
(...)
#Subsystem sftp /usr/lib/openssh/sftp-server
(...)
Subsystem sftp internal-sftp
Match group sftpusers
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication yes
- 您需要重新启动 ssh 服务才能应用更改。
sudo service ssh restart
- 现在您应该设置创建一个新用户。
按照以下命令的不同说明并输入用户密码。
sudo adduser user1
- 让我们将新用户添加到我们之前创建的 sftp 组。
sudo usermod -g sftpusers user1
sudo usermod -s /bin/nologin user1
- 此时,我们需要做的最后一件事就是将用户禁锢在
/home/<user>
目录中。
sudo chown root:user1 /home/user1
sudo chmod 755 /home/user1
您可以使用以下方式创建属于用户的新文件夹
sudo mkdir /home/user1/new_folder
sudo chown user1:user1 /home/user1/new_folder
sudo chmod 755 /home/user1/new_folder
我创建这几天前 repo 自动化了这个过程