功能齐全的微型linux,51CTO博客-专业IT技术博客创作平台-技术成就梦想

四、提供远程连接功能

Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。     Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器。

dropbear: 更小环境下,提供简单ssh远程连接服务

1、在宿主机上编译dropbear并移植dropbear, dropbearkey, dbclient, scp到目标机上

(1)下载、解压dropbear-2013.58.tar.bz2# tar xf dropbear-2013.58.tar.bz2

(2)编译安装dropbear-2013.58.tar.bz2# cd dropbear-2013.58

# ./configure

# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

# less INSTALL  #查看安装文档,文档中有详细的安装步骤

9c9da2bf7d3f0c03cd497dcefb0117e5.png

# ./configure --help  #编译选项信息帮助

./configure 不加任何选项,默认安装在/usr/local目录下

817af8950862840b81989f0f2b722278.png

注意:千万不要修改以下pam认证的目录,使用宿主机系统默认的pam认证

80101f57cf2aa8bd990793750aea99d5.png

(3)移植dropbear, dropbearkey, dbclient, scp命令到目标机上

使用bincp.sh脚本复制命令,把dropbear移植到目标机上[root@localhost ~]# ./bincp.sh

Plz enter a command: dropbear

Plz enter a command: dbclient

Plz enter a command: dropbearkey

Plz enter a command: /usr/local/bin/scp

Plz enter a command: quit

2、详细配置

为目标机上的dropbear提供两个密钥文件# mkdir /mnt/sysroot/etc/dropbear

# dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key

# dropbearkey -t rsa -s 1024 -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key

dropbear要认证用户,而认证用户要用到名称解析(nsswitch),这就意味着要把nsswitch的库libnss复制过去,然后给nsswitch提供配置文件。(这一步在以上已经做了,在此就不啰嗦了)

dropbear启动时在/var/run/下会生成一个pid文件,而这个目录在/mnt/sysroot中还没创建# cd /mnt/sysroot

# mkdir var/run

dropbear在远程连接时会去检查你默认启动的shell是否为安全shell,不是安全shell则不允许登录。安全shell在/etc/shells文件中指定。[root@localhost sysroot]# vim etc/shells

/bin/sh

/bin/ash

/bin/hush

/bin/msh

/bin/bash

/sbin/nologin

到此,还是不能远程登录。当你远程登录系统时,所登录的终端是伪终端,伪终端是依赖于/dev/pts目录来实现的,而目标机上没有该目录,因此要在目标机上创建/dev/pts目录。

但是不能直接# mkdir /mnt/sysroot/dev/pts

,因为当系统启动时,内核会挂载devpts

文件系统到/dev目录下,在/dev目录下的原有数据会被隐藏。

编辑 /mnt/sysroot/etc/fstab文件,加上以下一行:devpts      /dev/pts    devpts  defaults    0 0

重新编辑/mnt/sysroot/etc/rc.d/rc.sysinit系统初始化脚本文件#!/bin/sh

#

echo -e "Welcome to \033[43mCustomed\033[0m Linux"

echo "Remounting root filesystem"

mount -n -o remount,rw /dev/sda2 /

echo "Creating dev file"

mdev -s   # mdev-s 应该在mount -a 之前

echo "Mounting all filesystem"

mkdir /dev/pts

mount -a

[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network

[ -z "$HOSTNAME" -o "$HOSTNAME" == '(none)' ] && hostname localhost || hostname $HOSTNAME

ifconfig eth0 192.168.1.155   #给目标机提供IP地址

ifconfig lo 127.0.0.1

为dropbear的相关命令设定环境变量,编辑/mnt/sysroot/etc/profile,添加以下一行export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

下面测试一下能否远程连接目标机

开启目标机系统,开启dropbear服务,使用管理员账号登录

9d1def29e6fa9d9fbfeed23015fb8c28.png

d5ee80e5691e96a573335718b41d0d2d.png

659858182dd24136a44db0e6de127ed8.png

到现在,已经能顺利地使用远程连接正常登录访问目标机了。

3、让dropbear开机自动启动

问题:那如何让dropbear在这个小型Linux系统中开机自动启动?

答:

(1)在/mnt/sysroot/etc/init.d目录下提供dropbear的服务脚本#!/bin/bash

#

dbprog="/usr/local/sbin/dropbear"

dbkeygen="/usr/local/bin/dropbearkey"

dsskey="/etc/dropbear/dropbear_dss_host_key"

rsakey="/etc/dropbear/dropbear_rsa_host_key"

rsasize=1024

dbport=22

gendsskey() {

if [ ! -f $dsskey ] ;then

[ -d /etc/dropbear ] || mkdir /etc/dropbear

echo "Generating dss key file."

$dbkeygen -t dss -f $dsskey

fi

}

genrsakey() {

if [ ! -f $rsakey ] ;then

[ -d /etc/dropbear ] || mkdir /etc/dropbear

echo "Generating rsa key file."

$dbkeygen -t rsa -s rsasize -f $rsakey

fi

}

start() {

gendsskey

genrsakey

if pidof $dbprog &> /dev/null;then

echo "$dbprog is already running..."

return 1

else

echo "Starting dropbear"

$dbprog -p $dbport

retval=$?

fi

if [ $retval -eq 0 ];then

echo "OK."

return 0

else

echo "Failure ..."

return 1

fi

}

stop() {

if pidof $dbprog &> /dev/null ;then

echo "stopping dropbear"

killall $dbprog

retval=$?

else

echo "$dbprog is not running..."

return 1

fi

if [ $retval -eq 0 ];then

echo "OK."

return 0

else

echo "Failure ..."

return 1

fi

}

status() {

if pidof $dbprog &> /dev/null ;then

echo "$dbprog is running..."

else

echo "$dbprog is stopped..."

fi

}

restart() {

stop

sleep 2

start

}

usage() {

echo "Usage: `basename $0` {start|stop|restart|status}"

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

status)

status

;;

*)

usage

;;

esac

(2)设定开机自动执行dropbear脚本# cd /mnt/sysroot/etc

# mkdir rc.start

# mkdir rc.stop

# cd rc.start/

# ln -sv ../init.d/dropbear 01dropbear   #这里要使用相对路径

重新编辑/mnt/sysroot/etc/rc.d/rc.sysinit脚本,在最后添加以下内容:for i in /etc/rc.start/* ;do

$i start

done

测试:

50ba085d342df354877ad807e342063a.png

五、提供nginx功能

1、在宿主机上测试nginx能否正常使用

下载并解压nginx-1.4.7.tar.gz# tar xf nginx-1.4.7.tar.gz

解决依赖关系# yum -y install pcre-devel

编译nginx# useradd nginx  #注意:nginx是以普通用户nginx身份运行的,所以要先创建普通用户nginx

# cd nginx-1.4.7

# ./configure --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --without-pcre --without-http_rewrite_module

选项解释:--conf-path=/etc/nginx/nginx.cnf   指定主配置文件的路径

--user=nginx   指定以nginx用户的身份运行

--group=nginx  指定以nginx组的身份运行

启动nginx# service httpd stop  #注意:如果httpd服务已开启,先停止httpd服务

# cd /usr/local/sbin

# ./nginx

# ss -tnl | grep 80   # 查看80端口是否处于监听状态

a373b80dc42e778b26a3b24afe5a1710.png

2、移植nginx到目标机上

复制nginx的配置文件到目标机上# cp -r /etc/nginx/ /mnt/sysroot/etc/

复制nginx安装目录下的所有文件到目标机上# cp -r /usr/local/nginx/ /mnt/sysroot/usr/local/

为目标机移植nginx程序的依赖库,使用bincp.sh脚本[root@localhost ~]# ./bincp.sh

Plz enter a command: /usr/local/nginx/sbin/nginx

Plz enter a command: quit

为目标机上的nginx提供普通用户nginx# grep "^nginx" /etc/passwd >> /mnt/sysroot/etc/passwd

# grep "^nginx" /etc/shadow >> /mnt/sysroot/etc/shadow

# grep "^nginx" /etc/group >> /mnt/sysroot/etc/group

# sync

3、在目标机上测试

af400458b72c147283e3c31867540d04.png

2b2f5925f4d8890302fac38169134bcd.png

到此,一个私人定制的微型Linux系统已经构建完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值