如何在SSH中限制除某个组以外的所有人?

Modified on: Sat, 20 Jul 2019 17:20:02 +0800

我想限制服务器上的所有用户只能使用SFTP,而管理员组的成员应具有完全SSH访问权限。

我发现可以使用Match GroupForceCommand来限制组的成员。但我没有发现任何逻辑上的否定。所以我试着反过来构建它:

# SFTP only, full access only for admin group
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Match Group admin
    X11Forwarding yes
    AllowTcpForwarding yes
    ForceCommand /usr/local/sbin/ssh-allowcmd.sh

并构建了一个脚本ssh-allowcmd.sh,用于执行给定命令或/bin/bash以进行交互式访问。

有更好的解决方案吗?

作者:robcast

最佳答案

如果您使用的是OpenSSH 5.1或更高版本,那么它支持匹配群组否定

假设管理员组的默认设置是正常的,那么只需更改其他人:

Match Group *,!admin
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

在最近的OpenSSH版本中,没有理由依赖第三方shell来完成这类工作。

作者:,Dan Carley

相关问答

添加新评论