SSH 允许使用指定命令进行任意登录

SSH 允许使用指定命令进行任意登录

我们的一个 Git 服务器最近宕机了,而且我们无法尽快恢复,因此我们将 DNS 重定向到一个虚拟(占位符)主机,当通过 HTTP/HTTPS 访问时,该主机会使用 302 将用户发送到我们的公告板。我想要配置此服务器,以便任何有或没有 SSH 密钥的用户都可以登录到用户git,并且命令仅限于一个预设的写入消息的命令(例如command="echo 'a message here'",restrict)。

我还没弄清楚如何允许任意登录。(限制命令很容易)有什么想法吗?(OpenSSH 7.9p1,Debian Buster)

答案1

有以下选项ForceCommand

部队指挥
强制执行 ForceCommand 指定的命令,忽略客户端提供的任何命令和 ~/.ssh/rc(如果存在)。使用带有 -c 选项的用户登录 shell 调用该命令。这适用于 shell、命令或子系统执行。它在 Match 块内最有用。客户端最初提供的命令在 SSH_ORIGINAL_COMMAND 环境变量中可用。指定 internal-sftp 命令将强制使用进程内 SFTP 服务器,当与 ChrootDirectory 一起使用时,该服务器不需要支持文件。默认值为 none。

似乎没有匹配的单个选项restrict,但是有单独的选项可以禁用所提到的功能:

限制
启用所有限制,即禁用端口、代理和 X11 转发,以及禁用 PTY 分配和 ~/.ssh/rc 的执行。

创建一个文件作为用户的 shell 可能会更容易git

#/bin/sh
echo 'a message here'
exit 1

由于每个要执行的命令都传递到用户的 shell,这限制了客户端可用的命令。客户端可以解释预期的命令,但对于您的要求来说不是必需的。

相关内容