一、通过dropbear为目标系统提供ssh远程连接服务

   1、编译安装dropbear

[root@localhost ~]# tar xf dropbear-2013.58.tar.bz2
[root@localhost ~]# cd dropbear-2013.58
[root@localhost dropbear-2013.58]# ./configure
[root@localhost dropbear-2013.58]# make PROGRAMS="dropbear dbclient dropbearkey scp"
[root@localhost dropbear-2013.58]# make PROGRAMS="dropbear dbclient dropbearkey scp" install

2、将dropbear移植至目标系统

宿主机上使用此脚本移植dropbear,cpCmd.sh脚本内容如下:

#!/bin/bash
#
declare -i DebugLevel=0
Target=/mnt/sysroot
[ -d $Target ] || mkdir $Target &> /dev/null
read -p "A command: " Command
while [ $Command != 'q' -a $Command != 'Q' ]; do
Command=`which $Command | grep -v "^alias" | grep -o "[^[:space:]]*"`
[ $DebugLevel -eq 1 ] && echo $Command
ComDir=${Command%/*}
[ $DebugLevel -eq 1 ] && echo $ComDir
[ -d ${Target}${ComDir} ] || mkdir -p ${Target}${ComDir}
[ ! -f ${Target}${Command} ] && cp $Command ${Target}${Command} && echo "Copy $Command to $Target finished."
for Lib in `ldd $Command | grep -o "[^[:space:]]*/lib[^[:space:]]*"`; doLibDir=${Lib%/*}[ $DebugLevel -eq 1 ] && echo $LibDir[ -d ${Target}${LibDir} ] || mkdir -p ${Target}${LibDir}[ ! -f ${Target}${Lib} ] && cp $Lib ${Target}${Lib} && echo "Copy $Lib to $Target finished."
done
read -p "A command: " Command
done

接下来运行此脚本,分别输入dropbeardropbearkeydbclientbash、ss即可;这些命令会被存储于目标系统的/usr/local/sbin或/usr/local/bin目录中。

3、为远程登录的用户提供伪终端设备文件

编辑/etc/fstab文件添加如下内容

devpts                  /dev/pts                devpts  defaults        0 0

4、为目标系统的dropbear生成主机密钥

默认情况下,dropbear到/etc/dropbear目录中查找使用的rsa格式主机密钥(默认名称为dropbear_rsa_host_key)和dss格式的主机密钥(默认名称为dropbear_dss_host_key)。其中,rsa格式可使用不同长度的密钥,但dss格式只使用1024位的密钥。

[root@localhost dropbear-2013.58]# mkdir /mnt/sysroot/etc/dropbear
[root@localhost dropbear-2013.58]# dropbearkey -t rsa -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key -s 2048
[root@localhost dropbear-2013.58]# dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key

5、定义安全shell

dropbear默认情况下仅允许其默认shell出现在/etc/shells文件中的用户远程登录

[root@localhost dropbear-2013.58]# vim /mnt/sysroot/etc/shells
//添加下面内容
/bin/sh
/bin/ash
/bin/hush
/bin/bash
/sbin/nologin

6、为目标主机提供网络服务转换机制

在宿主机上使用默认选项编译的dropbear将依赖nsswitch实现用户名称解析,因此,还需要为目标主机提供nss相关的库文件及配置文件。

[root@localhost ~]# vim /mnt/sysroot/etc/nsswitch.conf
//添加下面内容
passwd:     files
shadow:     files
group:      files
hosts:      files dns
//复制所需要的库文件:
[root@localhost ~]# mkdir /mnt/sysroot/usr/lib64
[root@localhost ~]# cp -d /lib64/libnss_files*  /mnt/sysroot/lib64/
[root@localhost ~]# cp -d /usr/lib64/libnss3.so /usr/lib64/libnss_files.so /mnt/sysroot/usr/lib64/

7、创建dropbear的服务脚本

为了dropbear服务脚本正常工作,把这些复制到目标机上

[root@localhost ~]# mkdir -pv /mnt/sysroot/var/lock/subsys
[root@localhost ~]# cp /sbin/consoletype /mnt/sysroot/sbin/

①、创建脚本

[root@localhost ~]# mkdir -pv /mnt/sysroot/etc/rc.d/init.d
[root@www sysroot]# vim /mnt/sysroot/etc/rc.d/init.d/dropbear
//
//脚本内容如下:
#!/bin/bash## description: dropbear ssh daemon# chkconfig: 2345 66 33#dsskey=/etc/dropbear/dropbear_dss_host_keyrsakey=/etc/dropbear/dropbear_rsa_host_keylockfile=/var/lock/subsys/dropbearpidfile=/var/run/dropbear.piddropbear=/usr/local/sbin/dropbeardropbearkey=/usr/local/bin/dropbearkey[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions[ -r /etc/sysconfig/dropbear ] && . /etc/sysconfig/dropbearkeysize=${keysize:-1024}port=${port:-22}gendsskey() {[ -d /etc/dropbear ] || mkdir /etc/dropbearecho -n "Starting generate the dss key: "$dropbearkey -t dss -f $dsskey &> /dev/nullRETVAL=$?if [ $RETVAL -eq 0 ]; thensuccessechoreturn 0elsefailureechoreturn 1fi}genrsakey() {[ -d /etc/dropbear ] || mkdir /etc/dropbearecho -n "Starting generate the rsa key: "$dropbearkey -t rsa -s $keysize -f $rsakey &> /dev/nullRETVAL=$?if [ $RETVAL -eq 0 ]; thensuccessechoreturn 0elsefailureechoreturn 1fi}start() {[ -e $dsskey ] || gendsskey[ -e $rsakey ] || genrsakeyif [ -e $lockfile ]; thenecho -n "dropbear daemon is already running: "successechoexit 0fiecho -n "Starting dropbear: "daemon --pidfile="$pidfile" $dropbear -p $port -d $dsskey -r $rsakeyRETVAL=$?echoif [ $RETVAL -eq 0 ]; thentouch $lockfilereturn 0elserm -f $lockfile $pidfilereturn 1fi}stop() {if [ ! -e $lockfile ]; thenecho -n "dropbear service is stopped: "successechoexit 1fiecho -n "Stopping dropbear daemon: "killproc dropbearRETVAL=$?echoif [ $RETVAL -eq 0 ]; thenrm -f $lockfile $pidfilereturn 0elsereturn 1fi}status() {if [ -e $lockfile ]; thenecho "dropbear is running..."elseecho "dropbear is stopped..."fi}usage() {echo "Usage: dropbear {start|stop|restart|status|gendsskey|genrsakey}"}case $1 instart)start ;;stop)stop ;;restart)stopstart;;status)status;;gendsskey)gendsskey;;genrsakey)genrsakey;;*)usage;;esac

②、给dropbea执行权限

[root@localhost ~]# chmod +x /mnt/sysroot/etc/rc.d/init.d/dropbear
[root@localhost ~]# cp /etc/rc.d/init.d/functions /mnt/sysroot/etc/rc.d/init.d/  //复制dropber调用的functions脚本至目标机

③、创建规范化开机启动、关机停止服务、

[root@localhost ~]# cd /mnt/sysroot/etc/rc.d/
[root@localhost rc.d]# ln -sv init.d/dropbear  dropbear.start //创建dropbear启动脚本链接
[root@localhost rc.d]# ln -sv init.d/dropbear  dropbear.stop  //创建dropbear停止脚本链接
[root@localhost rc.d]# vim rc.sysinit

添加下图红线划的内容:

④、创建关机时的服务脚本rc.sysdown

[root@localhost ~]# vim /mnt/sysroot/etc/rc.d/rc.sysdown
//添加下面内容
#!/bin/sh
#
sync
sleep 2
sync
/etc/rc.d/*.stop stop
/bin/umount -a -r
poweroff
[root@localhost ~]#  chmod +x /mnt/sysroot/etc/rc.d/rc.sysdown
//给此脚本执行权限

8、重启目标机,测试远程ssh登录

使用Xshell远程登录:

登录成功!

二、通过nginx提供web服务

1、编译安装nginx

[root@localhost ~]# tar xf nginx-1.4.2.tar.gz
[root@localhost ~]# cd nginx-1.4.2
[root@localhost nginx-1.4.2]# ./configure --prefix=/usr/local --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --user=nginx --group=nginx --without-pcre --without-http_rewrite_module --without-http_geo_module --without-http_uwsgi_module --without-http_fastcgi_module --without-http_scgi_module --without-http_memcached_module
[root@localhost nginx-1.4.2]# make && make install

创建nginx用户

groupadd -r nginx
useradd -r -g nginx nginx

2、移植nginx至目标系统

[root@localhost ~]# sh /tmp/mylinux/cpCmd.sh
A command: nginx
Copy /usr/local/sbin/nginx to /mnt/sysroot finished.
Copy /lib64/libpthread.so.0 to /mnt/sysroot finished.
Copy /usr/lib64/libcrypto.so.10 to /mnt/sysroot finished.
A command: q

3、移植配置文件至目标系统

[root@localhost ~]# mkdir  /mnt/sysroot/etc/nginx/
[root@localhost ~]# mkdir /mnt/sysroot/var/log/nginx
[root@localhost ~]# mkdir /mnt/sysroot/usr/local/html
[root@localhost ~]# mkdir /mnt/sysroot/usr/local/logs
[root@localhost ~]# cp /etc/nginx/*  /mnt/sysroot/etc/nginx/

4、复制nginx用户信息

[root@localhost ~]# grep "^nginx" /etc/passwd >> /mnt/sysroot/etc/passwd
[root@localhost ~]# grep "^nginx" /etc/group >> /mnt/sysroot/etc/group
[root@localhost ~]# grep "^nginx" /etc/shadow >> /mnt/sysroot/etc/shadow

5、创建测试页面

[root@localhost ~]# ls /usr/local/html/*
/usr/local/html/50x.html  /usr/local/html/index.html
[root@localhost ~]# cp /usr/local/html/* /mnt/sysroot/usr/local/html/

6、测试

启动目标主机,然后使用如下命令启动nginx,即可通过浏览器测试访问。

/usr/local/nginx

在浏览器中输入目标机IP,测试

转载于:https://blog.51cto.com/lemidi/1391307

busybox订制小型linux(二)相关推荐

  1. linux深度定制,专为国人订制!Linux Deepin新版发布

    2011年终,深受国人喜爱的的深度Linux操作系统又发布新版本了,此次发布的是正式版Linux Deepin 11.12.从Linux Deepin 10.12版本开始,深度Linux采用了Gnom ...

  2. 下一波模式移转-订制化制造 打通物联网任督二脉

    订制化制造可望打通发展物联网产业的任督二脉.由于各种终端装置都可连网.互动,势将衍生许多新兴应用与服务的发展空间.物联网产业已是大厂竞相投入的兵家必争地,也为新创企业打开机会之窗,可思考发展建构订制化 ...

  3. 从源码开始编译一个带有WEB服务器功能的小型LINUX(下)

    上接:从源码开始编译一个带有WEB服务器功能的小型LINUX(上) 七.为新构建的ToyLinux启用虚拟控制台 这个可以通过宿主机来实现,也可以直接启动刚构建成功的小Linux进行配置.我们这里采用 ...

  4. CSDN开发者周刊 TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库

    CSDN开发者周刊:   TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库 CSDN开发者周刊:只为传递"有趣/有用"的开发者 ...

  5. 打造自己的专属Linux(一):快速建立一个小型Linux

    ##请脚下留情...踩我的同学请告诉我原因,(二)刚发上去一上午被踩了10次... ##打造自己的专属Linux(二)的链接http://blog.csdn.net/deansrk/article/d ...

  6. alpine linux apk删除,把玩Alpine linux(二):APK包管理器

    原标题:把玩Alpine linux(二):APK包管理器 Alpine Linux非常精简,开机内存占用也在二三十兆大,没有拆箱即用,就需要我们自己去做一些了解和配置. Alpine Linux的优 ...

  7. 如何订制个性化的网址导航

    我们常常忘记某个网站的网址,甚至名称,通常要借助浏览器的收藏夹或者搜索引擎来搜索,也会求助上网导航网站(如hao123)来寻找网址.是否能够订制一款个性化的网址导航,并能够同步到各个上网场所(如办公室 ...

  8. [手机Linux] 二,安卓手机安装linux系统, 部署完全属于自己的服务器(Linux Deploy)

    背景: 之前买过一台阿里云服务器1G1核的,玩起来真的是卡脑壳,卡卡的,经费在燃烧却得不到灰烬,而是萌想做一台完全属于自己的服务器,而是百度发现原来我们的安卓手机也可以当服务器器(Linux),而是翻 ...

  9. Python爬虫——urllib下载和订制请求对象

    文章目录 Python爬虫--urllib下载和订制请求对象 1.urllib下载资源 2.定制请求 Python爬虫--urllib下载和订制请求对象 1.urllib下载资源 下载资源使用urll ...

最新文章

  1. iOS FMDB之FMDatabaseQueue(事物与非事物)
  2. redis3.0.0 集群安装详细步骤
  3. 重庆python就业工资待遇-重庆达内毕业的Python学员都在做什么?能拿多少工资?...
  4. Techparty-广州Javascript技术专场(学习分享)
  5. MySQL 最新8.0版本windows系统下数据库的安装、配置与使用实例演示,客户端使用ip连接数据库失败问题处理
  6. PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
  7. 【pmcaff1220】三个案例教你如何玩转跨界
  8. linux安装unzip及使用
  9. java中activiti框架中的排他网关使用方法,多条件判断
  10. VMWare Workstation虚拟机 安装Centos7 图文指南
  11. 华为认证hcia证书实力 华为认证hcia考试题库
  12. 三十款国外IES灯光经典素材整理i
  13. 【干货】Vray渲染器的使用方法
  14. uni-app - MUMU模拟器模拟 iPad 尺寸开发(分辨率及DPI调整)
  15. Ubuntu Women:女娃玩电脑不输纯爷们!
  16. 插画人物着色教程,如何为动漫插图人物添加颜色?
  17. Linux系统时间、系统时区和时钟同步的部分理解
  18. [竞赛图判定定理]兰道定理(Landau's Theorem)介绍及其一种证明
  19. python黄金走势预测_python实时获取和讯网纸黄金价格信息
  20. nginx调优(一)

热门文章

  1. android getevent 代码,Getevent  |  Android 开源项目  |  Android Open Source Project
  2. mx250是什么_来看看联想小新Pro13 2020款和2019款哪个好?区别是什么?
  3. python设计---空域增强之图片去噪(中值滤波、均值滤波、高斯滤波、双边滤波)
  4. java项目分页_Java项目实战分页类
  5. 良好的编码风格 java_关于java:编码风格是否遵循良好做法
  6. php switch case default,switch语句中必须有default选项吗?
  7. Flutter学习笔记(10)--容器组件、图片组件
  8. MySQL DATE_ADD() 函数
  9. nginx 开展对RT5350
  10. 用命令实现Win7远程桌面关机和重启