
I use CyberDuck, which is available on both Mac/Windows. If you don’t add the Public Key, the users can connect without any credentials. They will need their Private Key to connect to the SFTP Server. The last step is to add the user’s Public Key. The user will the use their own private key to connect to the SFTP via some SFTP client.

The final step is add SSH Public Key, which the user should provide to you. This rule will give the user access to delete, fetch, update and add files to your s3 bucket via FTP.

You can copy and paste this and modify the custom-bucket-name field. So just head to IAM create a custom SFTP role for your user in AWS under the service use case of Transfer. In our case, we want to restrict users to only being able to view a specific bucket. The next part is to handle user role permissions and policy creation. So after we have created the SFTP server and created the S3 bucket that you would like the user to have access. Once this step is completed, you will be prompted to review your server summary and confirm, in which your SFTP server will be generated. Just select a domain, which will provide 2 options, here we will just go with Amazon S3 as we will provide user access to an s3 bucket with limited permissions to a specific bucket.
