前言
该方案实现的效果就是通过指定用户名可以直接ssh连接到某个linux机器中的chroot开发环境,在 ubuntu 22.04
环境测试通过
流程
首先我们需要有个现成的 chroot 环境,我这里是 debian10-aarch64
文件夹,如果你没有可以参考我先前的文章制作一个:
https://www.cnblogs.com/magicdmer/p/17640427.html
这个环境不要位于某个用户目录下,最好位于 opt 这种顶层目录下,不然会出现各种权限导致的 ssh 无法连接的问题
然后我们需要设置 chroot 环境文件夹的权限为 755
,接着设置其 owner 为 root:root
chmod 755 -R debian10-aarch64
chown root:root -R debian10-aarch64
然后我们在外面系统创建一个用户名,这里我创一个用户 debian10
adduser debian10
然后我们 cd 到 chroot 环境的 home 目录,创建一个 debian10 用户名文件夹当做其 chroot 环境的用户目录,然后修改其 owner 为 debian10:debian10
接着我们配置 ssh 配置文件,在最下面加入
Match User debian10
ChrootDirectory /opt/debian10-aarch64
然后我们将外面 linux 环境的 /etc/passwd
和 /etc/group
拷贝到 chroot 环境的 /etc
目录,这个步骤是为了解决 chroot 环境 ssh 上去后命令行只会显示一个 $
而不是 debian10@xxxx$
的问题
接着我们要解决 chroot 环境无法 su 到 root 用户的问题,这个需要我们先从外面 linux 环境使用 chroot 进去,这样我们默认就是 root 用户,就可以执行一些安装操作,我们需要安装一个 sudo,安装完后,我们需要修改 sudoer 文件,这里我们使用 visudo
指令来修改,这样方便 sudo 即刻生效,添加下面这条:
debian10 ALL=(ALL:ALL) NOPASSWD:ALL
然后我们就可以 ssh 上去,使用 sudo -i
来切换到 root 用户,或者使用 sudo 指令来执行一些命令了