定製微型Linux系統(續)

定製微型Linux系統前篇:http://hjqjk.blog.51cto.com/5970897/1544888 nginx


4、提供遠程鏈接功能
shell

    Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基於POSIX的各類平臺。     Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的「嵌入」式的Linux(或其餘Unix)系統,如無線路由器。vim

    dropbear: 更小環境下,提供簡單ssh遠程鏈接服務安全

 

一、在宿主機上編譯dropbear並移植dropbear, dropbearkey, dbclient, scp到目標機上bash

 

1)下載、解壓dropbear-2013.58.tar.bz2服務器

# tar xf dropbear-2013.58.tar.bz2


2)編譯安裝dropbear-2013.58.tar.bz2less

# cd dropbear-2013.58
# ./configure
# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

 

# less INSTALL  #查看安裝文檔,文檔中有詳細的安裝步驟

wKioL1P8etqQVGyXAAHv6mRuGyQ757.jpg

 

# ./configure --help  #編譯選項信息幫助
./configure 不加任何選項,默認安裝在/usr/local目錄下


wKioL1P8e33Alr-AAAERjFbkx2U772.jpg

注意:千萬不要修改如下pam認證的目錄,使用宿主機系統默認的pam認證ssh

wKioL1P8e5yh7wZbAAAp6NZev_U571.jpg

 

(3)移植dropbear, dropbearkey, dbclient, scp命令到目標機上ide

使用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


二、詳細配置

爲目標機上的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服務,使用管理員帳號登陸

wKiom1P8e8rDF6bIAAAWnXJYs08195.jpg


wKiom1P8e-fgzKenAAI5QsFkGdM377.jpg


wKioL1P8fQ6Qt3tkAAIQkGVJgp8252.jpg

到如今,已經能順利地使用遠程鏈接正常登陸訪問目標機了。

 

三、讓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


測試:

wKioL1P8fiywXywBAAEWsxCZLoE909.jpg

5、提供nginx功能

一、在宿主機上測試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端口是否處於監聽狀態


wKioL1P8flCQKgACAAHumKD_YY0741.jpg

二、移植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


 

三、在目標機上測試

wKiom1P8fU7hlQuPAAJbx2lCvtE905.jpg

wKioL1P8fnSyijVXAAIL1LAc5n4460.jpg

 

到此,一個私人定製的微型Linux系統已經構建完成了。

相關文章
相關標籤/搜索