You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto配置SSH用户目录监禁失败,SSH登录异常求助

SSH用户Chroot监禁失败排查与修复(Yocto环境)

1. 先确认sshd_config配置的正确性

针对linuxopsys用户的Chroot规则必须满足语法和优先级要求:

  • 确保Match块没有被其他规则覆盖,建议放在配置文件末尾
  • ChrootDirectory必须是绝对路径,且严格符合权限要求
    示例正确配置:
Match User linuxopsys
    ChrootDirectory /home/linuxopsys/chroot
    # 如果需要shell登录,不要加ForceCommand;仅SFTP需求可保留下面一行
    # ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

2. 检查Chroot目录的权限与核心结构

sshd对Chroot目录的权限有强制要求:

  • Chroot根目录必须由root用户拥有,权限不能高于755(禁止其他用户拥有写权限)
  • 子目录可按需给linuxopsys用户授权,但顶层目录必须严格遵循root所有+755权限
  • 必须包含Chroot环境的必要组件:
    • 设备文件:手动创建或在Recipe中添加命令生成
      mknod /home/linuxopsys/chroot/dev/null c 1 3
      mknod /home/linuxopsys/chroot/dev/zero c 1 5
      mknod /home/linuxopsys/chroot/dev/random c 1 8
      mknod /home/linuxopsys/chroot/dev/urandom c 1 9
      chmod 666 /home/linuxopsys/chroot/dev/*
      
    • 依赖库:通过ldd /bin/bash查看shell依赖,将对应so文件复制到Chroot的/lib或/lib64目录
    • 可用shell:确保Chroot内存在/bin/bash(或你指定的shell),权限设为755
    • 系统文件:复制主机的/etc/passwd、/etc/group到Chroot目录,确保linuxopsys用户条目存在,且shell路径指向Chroot内的对应文件

3. 修正用户创建参数

你当前的EXTRA_USERS_PARAMS缺少主目录创建和shell指定,容易导致登录失败:

EXTRA_USERS_PARAMS = "useradd -m -d /home/linuxopsys -s /bin/bash -P linuxopsys linuxopsys;"
  • -m自动创建主目录
  • -d指定用户主目录路径
  • -s明确设置登录shell为/bin/bash(避免默认使用/sbin/nologin)

4. 查看sshd日志定位具体错误

登录失败时,直接查看目标系统的sshd日志(通常在/var/log/auth.log或/var/log/secure),日志会明确给出失败原因:

  • 权限问题:ChrootDirectory /home/linuxopsys/chroot has wrong ownership or mode
  • 依赖缺失:error: subsystem request for sftp failed, subsystem not found
  • 目录结构错误:fatal: bad ownership or modes for chroot directory component

5. Yocto构建阶段的注意事项

  • 确保Recipe的do_install阶段正确创建Chroot目录、设备文件,复制依赖库和shell,通过FILES_${PN}指定所有需要安装到目标系统的文件
  • 确认sshd_config的修改被正确应用:可通过自定义Recipe覆盖openssh的默认配置,或用FILESEXTRAPATHS添加自定义配置文件
  • 构建完成后,在目标系统中检查/etc/ssh/sshd_config,确保你的Match规则没有被其他配置覆盖

6. 验证步骤

  1. 在目标系统上手动配置好Chroot目录和sshd_config,执行systemctl restart sshd重启服务
  2. 从远程机器尝试登录:ssh linuxopsys@target-ip,若失败立刻查看auth日志
  3. 登录成功后执行pwd和cd /,确认是否被限制在Chroot目录内

内容的提问来源于stack exchange,提问作者karkator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:37:35