BusyBox 配置 SSH
1 准备工作
我们可以编译需要的 dropbear 工具: https://github.com/mkj/dropbear/releases
1 2 3 4 5 6 7 8 9
| ./configure --enable-static make PROGRAMS="dropbear dbclient dropbearkey scp"
cp dropbear /path/to/rootfs/usr/sbin/ cp dropbearkey /path/to/rootfs/usr/bin/ cp dbclient /path/to/rootfs/usr/bin/ cp scp /path/to/rootfs/usr/bin/
|
BusyBox 极简 rootfs 默认没有:
/etc/passwd
/etc/group
/etc/dropbear
/dev/pts
DHCP client
PTY terminal support
SSH 必须依赖以上功能, 因此我们需要逐步补齐.
2 创建基础用户系统
在宿主机生成密码 Hash.
可能生成.
1
| $6$X1yJVveI770P2Zdp$gWes7cMWJzlFtq5v1wS0v5xkZmRIkRKmeh0Aa2JORKqLLpQFqS0jtju9lBW8O1AR8u7SjS9.4376aTuUH/3gI.
|
在 qemu 中创建.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| mkdir -p /etc
cat > /etc/passwd << 'EOF' root:$6$X1yJVveI770P2Zdp$gWes7cMWJzlFtq5v1wS0v5xkZmRIkRKmeh0Aa2JORKqLLpQFqS0jtju9lBW8O1AR8u7SjS9.4376aTuUH/3gI.:0:0:root:/root:/bin/sh EOF
cat > /etc/group << 'EOF' root:x:0: EOF
mkdir -p /root mkdir -p /etc/dropbear
|
3 配置网络
1 2 3 4
| ip link set eth0 up udhcpc eth0 ip addr add 10.0.2.15/24 dev eth0 ip route add default via 10.0.2.2
|
4 启用 PTY 支持
SSH 必须通过 PTY 分配终端, 否则会报错.
1 2
| PTY allocation request failed shell request failed
|
为此, 创建 /etc/pts.
1 2 3 4
| mkdir -p /dev/pts mount -t devpts devpts /dev/pts
|
5 启动 Dropbear
1 2
| killall dropbear 2>/dev/null dropbear -R -E
|
宿主机启动应包含.
1
| -netdev user,id=net0,hostfwd=tcp::2222-:22
|
6 配置启动脚本
1 2 3 4 5 6 7 8 9 10
| #!/bin/sh mount -t proc none /proc mount -t sysfs none /sys mount -t devpts devpts /dev/pts
ip link set eth0 up udhcpc eth0 &
mkdir -p /etc/dropbear dropbear -R
|