允许SFTP但不允许SSH?

我为几个朋友和小客户开了一个很小的托pipe公司,没什么大的。

我想给我的“客户”在服务器上pipe理他们的文件的权利。 我讨厌FTP,因为它不安全,在我看来已经过时了。

所以我想让我的用户通过SFTP连接,但不允许他们通过SSH连接。 (我知道,我知道,SFTP使用SSH)。 但是我只是在想,可能吗?

所以我不必在服务器上安装FTP服务,一切都会很棒!

    从版本4.9开始,OpenSSH(在centos 5.x中不可用,但ChrootDirectoryfunction被反向移植)有一个internal-sftp子系统:

     Subsystem sftp internal-sftp 

    然后阻止其他用途:

     Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp 

    将您的用户添加到sftponly组。 您必须将用户的/home/user目录更改为/因为chroot,并且/home/user应该由root拥有。 我还将/bin/false设置为用户的shell。

    有一个壳scponly这是什么。 它也可以chroot

    签出rssh这是一个假的shell,允许sftp但拒绝ssh

    更多关于RSSH

    http://www.pizzashack.org/rssh/

    RPM包

    http://pkgs.repoforge.org/rssh/

    您可以configurationrssh来允许/拒绝不同的行为,如sft,scp等

    您可以修改/ etc / passwd并为该用户提供一个伪造的shell,以便他不能使用ssh。

    不要忘记findUsePAM yes行,并注释它:

     #UsePAM yes 

    在不禁用这个的情况下,你的SSH服务器会在重新加载/重新启动时崩溃。 既然你不需要PAM的奇特function,这没关系。

    如上所述,我使用将用户shell指定为/ bin / false的方法。 但是,您必须确保/ bin / shell位于/ etc / shells中。 然后它工作ssh = no ftp = ok。

    我也使用vsftpd并添加这个
    chroot_local_user = YES到/etc/vsftpd/vsftpd.conf,以便ftp-ers不能看到其他自己的date。

    这些简单的改变的好处是没有恼人的configuration为每个用户的SSHconfiguration。

    configurationssh只为某些选定的用户启用sftp是个不错的主意,只要你安装了scponly或者rssh ,它就能正常工作。

    rssh工作正常,除非你需要configurationjail,在这种情况下,尽量遵循chroot手册提供的指令是疯狂的,导致“复制”系统可执行文件和库的大部分,就在“每个用户jail”之下,包括rssh shell本身。 这是一个浪费空间的方法。

    在监狱设置的情况下,需要对configuration有深入的了解,导致永远存在的login拒绝问题。

    允许jail正常工作的“ftp”function,SSL / TLS支持安全事务和login的直接方法是使用“老式工作”的VSFTPD,它可以快速,干净地安装,并根据需要提供所有可configuration性。但并非最不重要:它的工作!

    毛里齐奥。