dropbear:适用于在更小的环境下,提供简单ssh远程连接服务。

编译安装dropbear:

#./configure
# make PROGRAM="dropbear dbclient dropbearkey dropbearconvert scp" 
# make PROGRAM="dropbear dbclient dropbearkey dropbearconvert scp" install

在宿主机上安装dropbear后,为dropbear程序提供用户主机间通信的key文件:

# mkdir /etc/dropbear
# dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
# dropbearkey -t rsa 2048 -f /etc/dropbear/dropbear_rsa_host_key

在宿主机端测试dropbear程序运行是否正常:

# dropbear -p 22022 -F -E 
# ss -tnl | grep :22022
LISTEN     0      20                       :::22022                   :::*     
LISTEN     0      20                        *:22022                    *:*   
# ssh 192.168.1.137 22022  ;使用客户端连接工具连接宿主机测试dropbear程序运行状态

连接正常情况下使用复制命令程序的脚本文件,移植dropbear程序至目标主机:

# bash bincp.sh;移植dropbear,dropbearkey,dbclient
# cp /usr/local/bin/scp /mnt/sysroot/usr/bin

为目标主机的dropbear程序生成秘钥文件:

# mkdir /mnt/sysroot/etc/dropbear
# dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key
# dropbearkey -t rsa -s 2048 -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key

为目标主机的dropbear程序提供运行时需要的run目录:

# mkdir /mnt/sysroot/var/run

dropbear启动时依赖于nsswitch获取主机名,所以还需要移植nsswitch的程序、库文件和配置文件:

# cp -a -d /lib64/libnss_files* /mnt/sysroot/lib64
# mkdir /mnt/sysroot/usr/lib64
# cp -a -d /usr/lib64/libnss3.so /mnt/sysroot/usr/lib64
# cp -a -d /usr/lib64/libnss_files.so /mnt/sysroot/usr/lib64
# cp -a -d /usr/lib64/libnsspem.so /usr/lib64/libnsssysinit.so /usr/lib64/libnssutil3.so /mnt/sysroot/usr/lib64
# cp /etc/nsswitch.conf /mnt/sysroot/etc

dropbear启动时会检查用户启动的shell是否为安全shell,在/etc/shells目录中定义的shell为安全shell,所以需要编辑/mnt/sysroot/etc/shells文件中的shell程序路径:

# vim /mnt/sysroot/etc/shells
/bin/sh
/bin/ash
/bin/hush
/bin/msh
/bin/bash
/sbin/nologin

远程登录的终端依赖于/dev/pts目录,这个目录是位于内核中的开机后在内存中识别和存在的伪文件系统,类似proc目录,所以要编辑/mnt/sysroot/etc/fstab挂载此文件系统:

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

由于编译内核时选择将内核探测到的硬件设备自动挂载到了/dev目录下,所以挂载devpts类型的文件系统到/dev/pts目录时,需要在系统的初始化脚本中定义一下,否则这个目录会被覆盖,在脚本中定义的格式为:

#!/bin/sh
#
echo -e "\033[0;31mWelcome to Customed Linux.\033[0m"
echo "Remounting root filesystem"
mount -n -o remount,rw /dev/sda2 /
echo "create device file"
mdev -s
echo "mount all filesystem"
mkdir /dev/pts
mount -a
[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network
[ -z "$HOSTNAME" -o "$HOSTNAME" == '(none)' ] && hostname localhost || hostname $HOSTNAME

引导目标主机,先在目标主机上配置IP地址,然后在远程连接工具上测试,远程登录正常后,可以在/mnt/sysroot/etc/rc.d/rc.sysinit中添加主机的IP地址定义,以后就可以直接输入IP地址远程接入目标主机。