要求:
允许特定用户组使用 SSH 但禁止使用 SFTP。一旦禁止,如果用户组尝试访问 SFTP,则不应允许,并且应关闭所有连接,用户应收到提示。
现在的情况:
我能够使用Match
阻止和来禁止特定用户组Forcecommand
。但是一旦登录失败就无法恢复提示。
例子:
abcd> sftp [email protected] [Does not allow but it remains in a hang state]
需要按 Ctlr C 才能返回提示符 (abcd>)
期待:
abcd> sftp [email protected] [Fails next line prompt should be back]
abcd>
我想知道这是否可行,如果可以,请分享您的意见。
答案1
忽略问题标题,而是关注评论中的问题:
相关用户组不应具有访问权限。这是出于安全目的的要求。
有一个相当简单的解决方案。假设 OpenSSH(其他软件应该有类似的配置选项),编辑 /etc/ssh/sshd_config 并添加或扩充指令:
- 允许用户
- 允许组
- 拒绝用户
- 否认集团
例如,要拒绝属于“no-ssh”组的所有用户访问,您可以添加:
DenyGroup no-ssh
相反,允许属于“ssh”组的用户访问,也可以类似地完成:
AllowGroup ssh
请参阅手册页中关于这些指令的相对优先级以及所支持的模式的讨论。
身份验证拒绝将在协议级别完成,因此如果您尝试,您将收到“拒绝访问”等错误消息,并返回到原来的位置。
只要小心,不要把自己锁在外面即可。
答案2
我看到两种可能性-但均未经过测试:
- 将您的本地 sftp 二进制文件更改为特殊组,使其可由该组执行,而其他组则不行。只有允许使用 sftp 的用户才是该组的成员。
- 将 sftp 更改为“内部”并为要阻止的组激活非工作的 chroot 环境。
答案3
如果你想禁止 SFTP 但允许 SSH,只需注释掉以下行:
Subsystem sftp /usr/lib/openssh/sftp-server