SSH 黑屏配置试用环境机器,受限bash和自定义shell

背景

Smartshell是WEB版本的Xshell黑屏操作,用来解决小团队没有堡垒机的问题。可以集中管控资源,登录凭证,以及对操作有个日志记录。其中试用环境需要一台测试机器,让用户查看页面。

最后使用了自定义shell解决,如下图使用test用户登录进去运行的是自己的shell文件。最后效果如下,输出什么都是shell文件中编辑的。

自定义的bash shell文件如下:

bash 复制代码
#!/bin/sh

printf '\033[?25l' 2>/dev/null

trap 'printf "\033[?25h\n\nConnection closed\n"; exit 0' INT TERM

ls
pwd
ll

echo "========================================="
echo "  Custom Shell - Black Screen Test Mode"
echo "========================================="
echo "Connected: $(date)"
echo "User: $(whoami)"
echo "From: $(echo $SSH_CLIENT | awk '{print $1}')"
echo "========================================="
echo ""
echo "enter terminal..."

while true; do
    sleep 1
    echo -ne "$(date +'%Y-%m-%d %H:%M:%S')\r"
done

问题

如果配置正式机器就需要配置严格的限制权限,否则非常容易被利用。

解决方案

  1. 使用docker创建一个centos的容器,使用ssh登录这个机器

  2. 使用受限bash,配置只允许使用的命令

  3. 自定义Shell

方案对比

对比维度 Docker 容器 rbash 自定义 Shell
隔离级别 进程+文件系统隔离 仅 Shell 层面限制 仅 Shell 层面限制
逃逸风险 极低(需内核漏洞) 中等(配置不当易逃逸) 低(脚本可控)
资源限制 支持 cgroup 不支持 不支持
操作审计 配合宿主机日志 无内置审计 支持内置日志
防御深度 5 层(宿主机+容器+SSH+内核+SELinux) 1 层(Shell) 1 层(Shell)
学习成本 中高

选型:自定义Shell方式,实现简单,灵活可控

实现

cat /etc/passwd 查看用户bash

/bin/bash 就是root 登录ssh黑屏交互的程序。登录ssh本质是连接,验证,登录机器,找一个Linux规定的程序来接待你。这个/bin/bash就是 根据root登录进去接待你的程序。

添加用户,并设置shell文件

创建文件:echo "" > /opt/shell/custom_shell.sh

赋予权限:chmod 755 /opt/shell/custom_shell.sh

创建用户,并设置执行sh文件:useradd -m -s /opt/shell/custom_shell.sh testuser

查询是否设置OK:

root@iZ2ze6n5mtst0dxrvqZ \~# grep testuser /etc/passwd

testuser:x:1001:1002::/home/testuser:/opt/shell/custom_shell.sh

给用户设置密码:passwd testuser

使用SSH登录

相关推荐
北执南念1 小时前
Docker实用篇2
运维·docker·容器
古道青阳1 小时前
构建工业级短视频生成流水线:Playwright + FFmpeg 自动化指南
运维·自动化·音视频
Ameilide1 小时前
Linux 应用软件编程 文件编程(IO)
linux·运维·服务器
枕星而眠1 小时前
Linux IO多路复用:select、poll、epoll 核心原理与进阶实战
linux·运维·服务器·c++·后端
Rain5091 小时前
GitLab-Runner + AI 代码审查服务 + 远程大模型 全套部署运维实战
linux·运维·人工智能·python·ci/cd·gitlab·ai编程
Black蜡笔小新2 小时前
零代码自动化企业私有化AI训练推理一体工作站DLTM训推一体化助力企业自主掌控AI能力
运维·人工智能·自动化
txg6662 小时前
WildSync:通过Wild API 使用恢复实现自动化 Fuzzing Harness 合成
运维·深度学习·网络安全·自动化
信创工程师-小杨2 小时前
OpenEuler系统如何升级OpenSSh10.3P1版本
linux·运维·服务器
yyuuuzz2 小时前
运维场景中AI模型的常见问题
运维·服务器·人工智能·深度学习·机器学习·云计算·aws