我们有一个web服务器,允许用户在chroot环境中上传(SFTP)大文件。 我们也希望能够使用SSH来pipe理这个服务器。
在我们以前的情况下,我们使用了系统sshd和一个chroot环境,里面运行着一个单独的sshd。 我希望我可以用“新的”ChrootDirectory选项简化configuration。
我们的服务器有两个IP地址,一个用于公共访问,一个用于内部访问。 单个sshd是否有可能侦听两个独立的IP /接口,但对它们进行不同处理? 在我读过的所有文档中,似乎只能区分用户或组,而不能区分IP /接口。
如果这是不可能的,双sshd设置是最好的select,我应该做用户pipe理按组筛选,或者有一个更优雅的方式来设置这样的服务器?
你可以用相反的方式使用Match 。 如果从内部networking连接,则默认为Chroot,然后否定该指令。
ChrootDirectory /chroot/somedir Match Address 10.0.0.0/24 ChrootDirectory none
但是,您应该考虑将安全决策放在networking上的含义。 包括validation用户通过回送创build新会话的可能性,以绕过这些策略。 一般来说,如果可能的话,定义User和Group会更安全。
(编辑:在正确阅读之前打字)
我最终使用的解决scheme如下:
Subsystem sftp internal-sftp ChrootDirectory <my chroot directory> X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp Match User <my admin account> Address <my ip> ChrootDirectory none X11Forwarding yes AllowTcpForwarding yes ForceCommand /bin/bash Match User <my admin account> ForceCommand none
所以这是我之前看到的答案的混合体,而且我做了两个Match块,所以来自其他IP的人,但试图使用我的pipe理员帐户将无法使用sftp或ssh。 我将密切关注服务器上的活动,看看是否可行,但内部testing看起来很有希望。
我创build了一个名为sftpuplod的组。 没有ssh-access的每个客户都在这个组里,只能使用sftp:
# sshd_config: Subsystem sftp internal-sftp Match group sftpupload ChrootDirectory /home X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
你也可以在〜中使用ChrootDirectory%h来实现真正的chroot
请参阅手册页