如何在不改变 /etc/passwd 的情况下限制用户的 ssh 为非终端访问?

如何在不改变 /etc/passwd 的情况下限制用户的 ssh 为非终端访问?

我的 Linux 系统上有一个用户,只允许使用 SSH 访问和scp,但不允许在 SSH 会话中进行 shell 会话。我想知道一种安全的设置限制的方法。sftprsync

典型的答案是限制用户的 shell,将/etc/passwd默认 shell 设置为rssh。但是,更改默认 shell 显然也会影响依赖于 SHELL 环境变量的其他应用程序。例如,在最新的 Fedora 22 上,它似乎会影响调用默认 shell 的 less 命令,因此用户在rssh运行 less 命令时会收到奇怪的警告(例如,当被另一个未通过 SSH 连接的用户 sudo 时)。可能还有其他程序受到更大、更严重的影响。

设置用户的authorized_keys来限制程序运行实际上不起作用,因为他可以使用sftp/scp将其更改为不受限制的内容。

那么,还有什么其他方法可以限制用户的访问?

相关内容