Skip to content

Instantly share code, notes, and snippets.

@bjoern-r
Created April 8, 2019 19:45
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bjoern-r/add5ef4380647b5da096286a26a1c591 to your computer and use it in GitHub Desktop.
Save bjoern-r/add5ef4380647b5da096286a26a1c591 to your computer and use it in GitHub Desktop.
Script to create a minimal chroot with busybox, dropbear and dtach and allow ssh access on port 5022
#!/bin/bash
CHROOTDIR=/opt/minichroot
mkdir -p ${CHROOTDIR}/bin
mkdir -p ${CHROOTDIR}/lib64
mkdir -p ${CHROOTDIR}/etc/dropbear
mkdir -p ${CHROOTDIR}/dev
mkdir -p ${CHROOTDIR}/tmp
mkdir -p ${CHROOTDIR}/lib/x86_64-linux-gnu
cp $(which dropbear) ${CHROOTDIR}/bin
cp $(which busybox) ${CHROOTDIR}/bin
#ldd ${CHROOTDIR}/bin/dropbear | awk '/lib/{print $3}' |
# while read f
# do
# [ -z $f ] && continue
# echo "copy lib: $f"
# mkdir -p ${CHROOTDIR}/$(dirname $f)
# cp $f ${CHROOTDIR}/$f;
# done
cp /lib64/ld-linux-x86-64.so.2 ${CHROOTDIR}/lib64
cp /usr/bin/dtach ${CHROOTDIR}/bin/
mount -o bind,ro /lib/x86_64-linux-gnu ${CHROOTDIR}/lib/x86_64-linux-gnu
mount -t devtmpfs udev ${CHROOTDIR}/dev
mkdir ${CHROOTDIR}/dev/pts
mount -t devpts devpts ${CHROOTDIR}/dev/pts
echo "creating user: user with password: user"
cat > ${CHROOTDIR}/etc/passwd << EOF
root:x:0:0:root:/root:/bin/sh
user:$5$9mJ1G1op3Q.Wr67n$nYwdPsNZduf9vE9tXvlZtAykCGrhxA2HTxQjttwS/Y.:1000:1000:user:/:/bin/sh
EOF
echo "Starting dropbear inside chroot..."
(
chroot ${CHROOTDIR} /bin/busybox --install -s /bin
echo "Changing password of user to foobar"
echo "user:foobar" | chroot ${CHROOTDIR} /bin/chpasswd
chroot ${CHROOTDIR} /bin/dropbear -F -E -B -R -g -m -p 5022
echo "dropbear exited.. cleaning up!"
umount ${CHROOTDIR}/dev/pts
umount ${CHROOTDIR}/dev
umount ${CHROOTDIR}/lib/x86_64-linux-gnu
)&
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment