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登录

相关推荐
瓦学妹28 分钟前
2026亚马逊本土店怎么注册?入驻流程、资料准备与常见问题
大数据·运维·人工智能
bellus-1 小时前
win11使用ubuntu 26.04
linux·运维·ubuntu
略略略咯咯2 小时前
centos更换镜像源
linux·运维·centos
IKUN家族3 小时前
Spring MVC(三)
运维·服务器·spring boot·spring·servlet·java-ee
Leon-Ning Liu3 小时前
【真实经验分享】ORA-12516 排查实录:共享服务器模式下 SHARED_SERVER_SESSIONS 不足引发的监听故障
运维·服务器·oracle
运维大师3 小时前
【K8S 运维实战】34-多集群管理Karmada
java·运维·kubernetes
东方护航数据恢复(深圳)3 小时前
服务器硬盘黄灯/红灯故障排查与处理命令全指南_东方护航数据恢复深圳店
运维·服务器·chrome
爱码少年3 小时前
SSH密钥登录完整流程与原理详解
运维·ssh
枳实-叶4 小时前
Linux 环境下段错误出现的原因及调试方法
linux·运维·服务器
Chief_fly4 小时前
ARM 麒麟系统服务器构建docker镜像
运维·服务器·docker