限制 ssh 用户仅能连接

限制 ssh 用户仅能连接

设置 SSH 跳转盒以允许一些外部人员访问内部服务器。我已经完成了身份验证工作,他们将使用私钥/公钥对进行身份验证。然后,我将使用 IP 表允许通过 RDP 访问他们需要处理的服务器。然后,我将让他们使用 Putty 上的隧道功能,这样他们只需在连接后在 RDP 窗口上执行 localhost:port,而不是在框中运行命令。以上所有操作均运行正常。

由于这些人是外部人员,我根本不希望他们能够访问跳转箱上的任何内容。我只是希望他们仅进行身份验证,然后使用 Windows RDP 进行远程操作。

现在,当他们进行身份验证时,它会在 Putty 中打开命令行,并且需要保持打开状态,以便他们可以进行远程操作。我的问题是这样的。是否可以限制用户只能进行身份验证而不能进行其他操作?我根本不希望他们有任何 shell 访问权限。也许类似于 /bin/false 所做的操作,只是连接保持打开状态以允许 RDP,而他们甚至无法输入命令。

理想情况下,我希望他们的 putty 会话不再起作用,除非保持连接有效直到关闭。但不确定这是否可行。我似乎在任何地方都找不到直接的答案。

我对 Linux 还不太熟悉,所以如果我问的问题比较愚蠢,请多包涵。

答案1

您可以查看bash的限制模式,并将其用作用户的登录 shell。

来自 GNU网站

如果 Bash 以名称 启动rbash,或者在调用时提供--restricted-r选项,则 shell 会变为受限的。受限 shell 用于设置比标准 shell 更受控制的环境。受限 shell 的行为与 相同,但bash不允许或不执行以下行为:

  • 使用内置命令更改目录cd
  • SHELL设置或取消设置、PATHENV或变量的值BASH_ENV
  • 指定包含斜杠的命令名称。
  • 指定包含斜杠的文件名作为内置命令的参数.
  • 指定包含斜杠的文件名作为内置命令-p选项的参数hash
  • 在启动时从 shell 环境导入函数定义。
  • SHELLOPTS在启动时从 shell 环境解析的值。
  • 使用>>|<>>&&>>>重定向运算符重定向输出。
  • 使用exec内置命令将 shell 替换为另一个命令。
  • 使用-f-d选项添加或删除内置命令enable
  • 使用enable内置命令启用已禁用的 shell 内置命令。
  • 指定-p内置选项command
  • set +r使用或关闭限制模式set +o restricted

顺便说一句,我不确定带有 SSH 隧道的跳转盒是否适合您的使用情况。也许您应该考虑托管一个私人 VPN 服务器,以允许来自外部网络的人员访问您的内部服务器。

我会推荐SoftEther VPN服务器,因为它轻量、功能强大且配置起来非常简单。服务器的配置过程在您可能选择使用的不同平台和操作系统上也是一致的。

相关内容