我正在使用 ssh 服务器,我唯一希望用户做的事情就是
ssh user@ip cat somefile
我的威胁缓解计划的一部分是为用户提供受限 bash
我已经看到了示例,chsh rbash
但在我的服务器上没有找到 rbash。所以我做了一个脚本“rbash”
#!/bin/bash
bash -r
bash -r 是启动受限 shell 的一个选项,所以我把这个脚本放在 /bin 中。跑了chsh user -s /bin/rbash
现在我可以ssh user@ip
进入服务器并发现自己处于受限制的外壳中,但是当我尝试ssh user@ip cat somefile
ssh 进程时卡住了debug1: sending command: cat somefile
我会以正确的方式解决这个问题吗?当我 ssh 登录我可以时cat somefile
,如何使命令远程工作并保留受限 shell?
其他可能相关的信息
- Os Fedora 29
- ssh 认证方法公钥
创建 rbash
如果您在手册页中一直向下滚动,
bash
您会找到该章RESTRICTED SHELL
:要使用名称 'rbash' 启动 bash,您可以创建一个 symlink
ln -s /bin/bash /bin/rbash
。限制用户
cat somefile
来自
man authorized_keys
:您可以调整您的 authorized_key 文件:
现在这个用户键组合只能运行
cat somefile
。为什么你的包装器不起作用
您的脚本运行
bash -r
并且它不执行您的命令cat somefile
。你可以看到当你set -xe
输入你的脚本时会发生什么:这表明它
bash
没有被卡住,而是在等待输入,并且您确实产生了两个 shell。它没有提示但可以执行命令:您可以将命令通过管道传输到此 shell,但这不是一个好的解决方案: