我想透過網路與客戶分享文件,並且正在研究 aws 上的 ftp 解決方案。我嘗試過 aws sftp,但設定角色策略很尷尬,而且該服務對於我的基本用例來說似乎有點昂貴。是否有其他方法可以在 EC2 或 S3 上設定非 aws 用戶可以存取的 ftp 伺服器。我想為不同的使用者新增不同子目錄的讀取權限。我正在使用 macOS。
我嘗試按照以下說明進行操作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
我創建這幾天前的倉庫自動化了這個過程