允许 SFTP 但不允许 SSH?

允许 SFTP 但不允许 SSH?

我正在为一些朋友和小客户创办一家小型托管公司,没什么大不了的。

我想让我的“客户”有权管理服务器上的文件。我讨厌 FTP,因为它不安全,而且在我看来已经过时了。

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

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

答案1

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

Subsystem sftp internal-sftp

然后阻止其他用途:

Match group sftponly
     ChrootDirectory /upload
     X11Forwarding no
     AllowTcpForwarding no
     AllowAgentForwarding no
     ForceCommand internal-sftp -d /%u

将您的用户添加到sftponly组中。chroot 目录必须由 root 拥有,并且不能是组可写的,因此请为每个用户创建一个由相应用户拥有的子目录(如果您匹配他们的主目录,它将是连接时的默认工作目录)。我还将其设置/bin/false为用户的 shell。

例如,用户可以使用以下命令上传单个文件:

sftp username@hostname <<< 'put filename.ext /'

(希望 scp 能很快被修改为使用 sftp,这样会变得更容易)

答案2

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

答案3

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

有关 RSSH 的更多信息

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

转速

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

您可以配置 rssh 来允许/拒绝不同的行为,如 sft、scp 等。

答案4

我使用上面提到的指定用户 shell 为 /bin/false 的方法。但是,您必须确保 /bin/shell 在 /etc/shells 中。然后它才能正常工作 ssh=no ftp=ok。

我还使用 vsftpd 并将此
chroot_local_user=YES 添加到 /etc/vsftpd/vsftpd.conf,以便 ftp-ers 看不到他们自己的日期以外的日期。

这些简单更改的优点是不需要为每个用户进行烦人的 ssh 配置。

相关内容