我的客户需要 sftp 服务器来共享文件,所以我在 amazon ec2 ubuntu 机器上创建了 sftp 服务器并添加了不同的用户。
现在他们的需求是,当用户通过 winscp 或其他客户端登录 sftp 服务器时,他们应该只能看到主目录中自己的文件夹,其他文件夹对他们不可见。此外,在他们的主目录中,他们不应该看到以点 (.) 开头的任何文件或文件夹。
这可能吗?例如参见下面的屏幕截图链接,我只想让我的客户查看/访问 Transcript 文件夹,不做其他任何事情。
答案1
谢谢大家,最终这个链接帮助我完成了我的任务。http://rmtheis.wordpress.com/2011/07/03/setting-up-an-sftp-site-on-amazon-web-services-ec2-creating-an-account-to-share-with-a-third-party-and-restricting-that-account-to-allow-only-sftp/
这包括三部分:
- 在 EC2 上设置 sftp 站点
- 创建新用户帐户
- 配置新用户帐户以执行只读 ftp,没有 ssh 权限
它用于将文件传输到受信任的用户或从受信任的用户接收文件。我将其用作偶尔向客户端发送非常大文件的解决方案,使用专用于该任务的 EC2 实例。传输完成后,我会关闭或删除该实例。
使用 Amazon Web Services EC2 设置服务器,选择 Ubuntu Amazon 系统映像 (AMI)。(您可以使用以下方式查找 AMI http://cloud.ubuntu.com/ami/。您可能希望选择一个符合免费套餐条件的套餐,例如 ami-1aad5273)
ssh 进入服务器:
ssh -i keyfile.pem [email protected]
安装 vsftpd:
sudo apt-get install vsftpd
创建新用户:
sudo adduser newusername
使用 AWS 管理控制台为第三方用户生成新的密钥对。
使用 puttygen 导入新密钥(keyname.pem)并复制其公钥。
在服务器上,为新用户创建.ssh 目录:
sudo mkdir /home/newusername/.ssh
将公钥粘贴到
/home/newusername/.ssh/authorized_keys
。设置权限:
sudo chmod 700 /home/newusername/.ssh
sudo chmod 600 /home/newusername/.ssh/authorized_keys
sudo chown -R newusername:newusername /home/newusername/.ssh
从本地机器测试新用户的 sftp 登录:
sftp -o IdentityFile=newkeypair1.pem
[email protected]
为只能使用 sftp 的用户创建新组:
sudo groupadd sftponly
sudo adduser newusername sftponly
编辑
/etc/ssh/sshd_config
并将子系统行更改为:
Subsystem sftp internal-sftp
并将这些行添加到末尾
/etc/ssh/sshd_config
:
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
设置权限,但不破坏 EC2 基于密钥的身份验证所需的文件:
sudo chown root:root /home/newusername
sudo chown -R newusername:newusername /home/newusername/.ssh
sudo /etc/init.d/ssh restart
现在新用户可以通过 sftp 连接,但不能通过 ssh 连接。将要共享的文件放在 中
/home/newusername
,并与用户共享密钥。