我为几个朋友和小客户开了一个很小的托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性。但并非最不重要:它的工作!
毛里齐奥。