Ubuntu 18.04 Odroid-XU4 SSH连接报错/bin/bash缺失问题排查与解决
SSH连接提示
/bin/bash: No such file or directory的排查与解决(Odroid-XU4 Ubuntu 18.04) 结合你的设备环境和遇到的问题,这个报错是SSH完成身份认证后,尝试启动登录shell时找不到对应可执行文件导致的。下面是具体的排查方向和解决步骤:
一、检查bash二进制文件是否存在或损坏
首先通过本地控制台(比如接HDMI显示器+键鼠)登录设备,先确认bash本身是否正常:
- 执行命令查看bash文件状态:
ls -l /bin/bash- 如果输出显示文件不存在,说明bash被误删或损坏,重新安装即可:
apt update && apt install --reinstall bash - 如果文件存在,但权限不是
-rwxr-xr-x(所有者root,组root),修复权限:chmod 755 /bin/bash
- 如果输出显示文件不存在,说明bash被误删或损坏,重新安装即可:
二、确认用户默认shell配置正确
从你的sshd_config里PermitRootLogin yes来看,你大概率用root用户登录。检查/etc/passwd里的shell配置:
cat /etc/passwd | grep root
正常输出应该类似:
root:x:0:0:root:/root:/bin/bash
如果最后一段不是/bin/bash(比如改成了不存在的路径),执行命令修改默认shell:
usermod -s /bin/bash root
三、排查ChrootDirectory的影响(关键排查点)
看你的sshd_config最后有一段配置:
Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory /home
如果你的登录用户(比如root)属于sftp_users组,那么SSH连接时会被chroot到/home目录。此时系统会在/home/bin/bash路径下寻找shell,而非原来的/bin/bash——如果/home目录下没有这个路径,就会触发报错。
解决方法二选一:
- 将用户移出sftp_users组(如果不需要该组的chroot权限):
然后重启sshd服务:gpasswd -d root sftp_userssystemctl restart sshd - 若需要保留chroot功能,在/home下搭建必要的shell环境:
- 创建对应的目录结构:
mkdir -p /home/bin /home/lib /home/lib64 - 复制bash和依赖库到chroot目录:
cp /bin/bash /home/bin/ ldd /bin/bash | grep -o '/lib.*\.[0-9]' | xargs -I {} cp {} /home/{}
- 创建对应的目录结构:
四、检查文件系统是否损坏
如果以上步骤都无效,可能是根分区文件系统损坏导致无法读取/bin/bash:
- 进入单用户模式(Odroid-XU4开机时按任意键进入U-boot菜单,选择单用户模式)
- 执行文件系统检查(注意:Odroid-XU4根分区通常为
/dev/mmcblk0p2,若你的分区不同请替换):fsck /dev/mmcblk0p2 - 修复完成后重启设备。
内容的提问来源于stack exchange,提问作者Taki Eddine
相关产品推荐
相关产品推荐

