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地址远程接入目标主机。