阻止 unix 帐户使用 SSH

阻止 unix 帐户使用 SSH

可能的重复:
在Linux中禁用普通用户(如oracle)直接登录但允许scp和sftp?

我想阻止 UNIX 帐户通过 SSH 进行连接,但它仍然应该可用于 SCP / SFTP。

那可能吗?

原因在于,unix 服务器对应用程序使用通用帐户,并且人们在使用该通用帐户而不是个人帐户登录服务器时。出于审计原因,我们希望他们使用个人帐户通过 SSH 连接到盒子。

答案1

这是很有可能的,并且有很多方法可以做到这一点。有拼凑的解决方案,也有优雅的解决方案。这完全取决于您想要做什么以及您想要投入多少时间的细节。

如果您有一些仅远程用户想要限制为 scp/sftp,您可能需要查看斯波利这套关于如何使其发挥作用的说明(假设是 Debian)。

你也可以尝试RSSH,这是做同样事情的另一个外壳替换。

您还应该为这些受限用户创建一个组,并(当然)将用户添加到该组中。然后,将类似的内容添加到您的sshd_config文件中(通常在/etc/ssh或 中找到/etc):

Match Group sftp-only
        ForceCommand internal-sftp
        #ChrootDirectory /somewhere/%u # Optional chroot jail
        #AllowTcpForwarding no         # Disable TCP forwarding
        #X11Forwarding no              # Disable X11 forwarding
        #Umask 700                     # Set the umask

这将禁用/强制这些用户进行 TCP 转发等操作。显然,您需要删除#您需要的内容。sshd_config(5)有关详细信息,请查看联机帮助页。

在这些组装中,最简单的是将用户的 shell 更改为falsenologin(在 Debian 上分别为/bin/nologin/usr/sbin/nologin)。稍微复杂一点的拼凑是对用户或用户组进行签入/etc/profile,然后使用“不允许登录”消息将其注销。如果你喜欢对冲你的赌注(我愿意),你可以这样做还有。请记住,仅靠它是不够的。

如果您有蜗牛书,第8章(作为示例免费提供)还有一些食谱。

答案2

是的,这是可能的,但并不容易。有一个名为 rssh 的程序,如果将其用作用户的默认 shell,则仅允许 sftp、scp、rsync、cvs 和 rdist。您当然可以编辑配置文件以进一步限制它。

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

答案3

您尝试过no-pty$HOME/.ssh/authorized_keys用户吗?

man sshd(8), AUTHORIZED_KEYS FILE FORMAT:
     no-pty  Prevents tty allocation (a request to allocate a pty will fail).

相关内容