Han*_*ndy 14 ssh account-restrictions
我想创建一个只能做一件事的用户:通过 ssh 指定驻留在一个特定文件夹中的脚本(和脚本的命令行参数)(为了这个问题,让我们称之为/local/remote_only_scripts/foo
)并让该脚本执行并返回它的输出。
澄清一些我不希望用户能够做的事情的例子:
/bin/login
. 它不是/local/remote_only_scripts/foo
文件夹中的脚本,因此不应由用户调用。/bin/ls
. 它不是相应目录中的脚本。请注意,这些示例还有许多其他我不希望用户能够执行的操作。在考虑一个动作时,问“这是由 中的脚本完成的/local/remote_only_scripts/foo
吗?” 如果答案是否定的,用户就不能这样做。如果答案是肯定的,那么用户应该能够做到。
PS:让我澄清一下“添加用户”的意思。我的意思不是将用户添加到某个 ssh 子系统。相反,我的意思是将用户添加到计算机系统中。所以,例如,我有一个运行 debian stable 的系统,通过它的地址来调用它,www.hg.bar.com。我想添加一个用户(通过 kuser、users-admin 或 useradd 或类似的方式)称他为 hg_guest。hg_guest 无法在本地登录或执行上述列表中的任何操作。hg_guest 所能做的就是“远程”执行脚本。我说他应该可以通过ssh这样做,但现在想想,也许让他使用ssh可能会让他在本地登录,所以可能需要一些其他机制。
Cor*_*ren 12
在authorized_keys 文件中有一个命令选项。此选项似乎完全符合您的要求。
请注意,它不是 chroot 或受限制的 shell。它只允许通过 ssh 执行那些命令。以您的示例,它将是:
ssh somehost /local/remote_only_scripts/foo
Run Code Online (Sandbox Code Playgroud)
对于这个authorized_keys 文件:
command="/local/remote_only_scripts/foo",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ...public key...
Run Code Online (Sandbox Code Playgroud)
如果您不希望您的用户能够在本地登录,则有很多方法。你可以:
passwd -l
编辑:添加了更多限制选项并阐明了如何删除本地访问。