将 SSH 用户的 shell 访问限制为仅 telnet

将 SSH 用户的 shell 访问限制为仅 telnet

我们有一台 CentOS 7 服务器,运行一个使用 telnet 的应用程序。我们希望用户能够使用 SSH 登录并从那里连接到 telnet,而不是打开端口以允许直接 telnet 访问。

但是,这些用户根本不需要访问任何其他内容。因此,我想知道是否可以创建一个自动打开 telnet 接口的自定义 shell,或者限制 shell 仅允许 telnet 命令。

当然,如果有其他更好的解决方案,我也很想听听!

他们需要访问的具体命令是:

telnet <ip> 25568

<ip>将是配置的少数本地 IP 地址之一

答案1

一种方法是chsh他们的帐户使用类似以下内容作为登录 shell,该 shell 会永远循环,直到输入适当的数字,此时脚本会用调用替换自身telnet。如果提供的命令有问题,您可能需要禁用telnet转义码 ( telnet -E ...),否则请查看telnet提供的每个选项,看看是否应该设置其中任何一个。还可以谨慎地unset或专门设置从远程 SSH 客户端携带的某些环境变量(例如PATH,区域设置等;使用env > whatenvisset脚本检查这些变量)。

#!/bin/bash

PS3='number for remote host: '

while :; do
  select ipaddr in 192.0.2.4 192.0.2.5 192.0.2.6; do
    if [[ -n "$ipaddr" ]]; then
        exec /usr/bin/telnet "$ipaddr" 25568
    fi
  done
done

如果需要的话,这将很容易实现远程自动化,expect尽管可能不如使用dialog弹出更图形化的选项菜单漂亮。

相关内容