我们有一台 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
弹出更图形化的选项菜单漂亮。