如何通过 SSH 提供控制台应用程序

如何通过 SSH 提供控制台应用程序

当存在 SSH 服务器,并且当用户登录时,有一个 cli 应用程序(例如一个简单的菜单)而您无法退出/启动新的 bash shell 时,通常如何解决。

这是否像更改给定用户的 shell 一样简单?

答案1

ForceCommand选项sshd_config

ForceCommand
强制执行 指定的命令ForceCommand,忽略客户端提供的任何命令(~/.ssh/rc如果存在)。使用带有 选项的用户登录 shell 调用该命令-c。这适用于 shell、命令或子系统执行。它在 Match 块内最有用。客户端最初提供的命令在SSH_ORIGINAL_COMMAND环境变量中可用。[…] 默认值为 none。

它说“该命令是通过使用带有选项的用户登录 shell 来调用的-c”,所以你需要exec另一个工具,而不仅仅是运行它:

ForceCommand exec top

这样用户的登录 shell 就会被top立即替换,shell 将不复存在。退出该工具将终止连接。

笔记:

  • 这仅影响通过 SSH 登录,用户仍然可以本地登录并获取 shell(如果此方法没有被其他方式故意禁用)。您说的是 SSH 访问,而不是一般访问,所以我假设这就是您想要的。

  • 你的问题以“通常如何解决……”开头。我不知道情况是否如此。通常解决了,我只知道这是一个可能的方式。

  • 要影响单个用户,您需要一个条件块,例如:

    Match User spectator
      ForceCommand exec top
    
  • 有些工具允许用户运行任意命令并获得 shell。(我甚至不确定top这件事是否安全,就当做一个例子吧)。

相关内容