第十周作业

1、实现sshd免密登录

生成私钥
ssh-keygen
两种方法,一种直接copy-id到客户端
ssh-copy-id root@10.0.0.203
另一种方法,copy-id到服务器,再由服务器下发公钥到客户端
ssh-copy-id root@10.0.0.202
scp .ssh/authorized_keys root@10.0.0.203:/root/.ssh/

2、编译安装dropbear实现SSH登录

 

源码编译安装:
    • 1、安装开发包组:yum groupinstall “Development tools”
    • 2、下载dropbear
        wget https://matt.ucc.asn.au/dropbear/dropbear-2019.78.tar.bz23、tar xf dropbear-2019.78.tar.bz2
    • 4、less INSTALL README
    • 5、./configure --prefix=/usr/lib/dropbear --sysconfdir=/etc/dropbear
    • 6、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"7、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
启动ssh服务:
    • 8、ls /usr/local/sbin/ /usr/local/bin/9、/usr/lib/dropbear/sbin/dropbear -h
    • 10、mkdir /etc/dropbear
    • 11、/usr/lib/dropbear/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 204812、/usr/lib/dropbear/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key
    • 13、/usr/lib/dropbear/sbin/dropbear -p :2222 -F –E #前台运行
          /usr/lib/dropbear/sbin/dropbear -p :2222 #后台运行
客户端访问:
    • 14、ssh -p 2222 root@127.0.0.115、dbclient -p 2222 root@127.0.0.1        # ../bin/dbclient相当于ssh客户端

3、实现单个用户及用户组使用sudo执行所有命令

visudo
增加一行
magedu ALL=(ALL)    ALL
magedu为用户名 ,ALL表示可以在所有机器上可以在本机上登录,(ALL)表示代表以谁的身份执行ALL表示为所有人 最后一个ALL 表示可以执行所有命令 也可以指定具体命令,如/usr/bin/ls /

%group  ALL=(ALL)  ALL 
%group为组名,表示属于这组的用户拥有的sudo权限

4、简述rsync用于那些场景,并对比scp有什么优点?

scp拷贝时,会将所有文件一次性拷贝到目标路径,无论文件是否已存在、是否存在变化,这样将会浪费时间和网络资源

利用rsync复制的时候可以实现一个增量的复制,rsync在复制前,会对比文件是否存在和是否存在变化,如果文件相同则不会复制,只复制不同的文件,这样就节约时间和带宽,适用于文件同步,网站更新类,大量文件复制等操作

5、搭建DHCP服务,实现自动获取ip地址

yum install -y dhcp
rpm -ql dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
修改全局变量也可以
option domain-name "magedu";                                       # dhcp显示名称
option domain-name-servers 114.114.114.114, 8.8.8.8;    # dns
default-lease-time 600;                                                   # 最小租约时间
max-lease-time 7200;                                                     # 最大租约时间
在作用域修改变量也可以,如果作用域有变量,就优先生效
subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.100 10.0.0.120;                                        # 分配地址范围
  option domain-name-servers ns1.internal.example.org;   # 如果使用全局变量,这行删掉
  option domain-name "internal.example.org";                  # 如果使用全局变量,这行删掉
  option routers 10.0.0.1;                                                # 默认网关
  option broadcast-address 10.0.0.255;
  default-lease-time 600;                                                 # 如果使用全局变量,这行删掉
  max-lease-time 7200;                                                  # 如果使用全局变量,这行删掉
}
检查语法
dhcpd configtest

启动服务
systemctl start dhcpd

关闭其他dhcp服务,启动客户机,在服务器上查看dhcp分配记录
cat /var/lib/dhcpd/dhcpd.leases

在客户机上,查看dhcp信息
cat /var/lib/dhclient/dhclient.leases

6、搭建PXE实现自动化安装系统

 

配置Centos7基于PXE的自动安装
    安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
    安装软件包
        httpd tftp-server dhcp syslinux system-config-kickstart
    配置文件共享服务:
        systemctl enable httpd
        systemctl start httpd
        mkdir /var/www/html/centos/{6,7}/os/x86_64 -p
        mount /dev/sr0 /var/www/html/centos/7/os/x86_64/
    准备kickstart文件
        cp /root/anaconda-ks.cfg /var/www/html/ks/centos7.cfg
        /var/www/html/ks/centos7.cfg 注意:权限
        通过system-config-kickstart制作也可以,通过anaconda-ks.cfg修改也可以
            cdrom        修改成    url --url=http://10.0.0.202/centos/7/os/x86_64/
            graphical    修改成    text
            # System services下                    添加禁用防火墙和selinux
            firewall --disabled
            selinux --disabled
            # System bootloader configuration    修改网卡名称eth
            bootloader --append="net.ifnames=0 biosdevname=0" --location=mbr

            # Partition clearing information    需要清空mbr和初始化硬盘
            clearpart --all --initlabel
            zerombr
            reboot
            # Disk partitioning information        分区策略按需
            %packages                            按需
            
            %post                                安装后脚本,按需
            mkdir /etc/yum.repos.d/bak
            mv /etc/yum.repos.d/*.repos /etc/yum.repos.d/bak
            cat >/etc/yum.repos.d/base.repo<<EOF
            [base]
            name=localyum
            baseurl=http://10.0.0.7/centos/6/os/x86_64/
            gpgcheck=0
            EOF

            echo 'PS1="\[\e[1;33m\][\u@\h \w]\\$\[\e[0m\]"'>> /etc/profile.d/env.sh

            # add new user
            useradd magedu
            echo 123456|passwd --stdin magedu

            # add ssh keygen
            mkdir /root/.ssh
            cat > /root/.ssh/authorized_keys<<EOF

            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrNp5n3YV8n3PL1NxccKhlN/WEGFLkmcNgR76UIqOZNmJ333l8equemgR7uCEMG4PgefSj7tlPupaEbGoJn+dP12zLwOBSznWHKmci4RGxnN0mDmr8erRkoT4I/DLS7KkIi6SvfWcTA6NgTGWUQALeVIbKHYx7o4YlKhWaoZNDJnVlvAWshXKJlLj5u51m/zl+JY15HATFnFRnT5MQd+DCqMZZFIa+ntXh3ruuJRs5PN7O58U9DUfHJW+8IGiA0luaw3qWIvvJyGhnfA85fHQ/EiXcHT41s7pXp+vy93AfXw8zi18QKT5zP+EnpGkqH2eBOpkPRylyfdWPctic+g2f root@linux-node2-202
            EOF

            chmod 700 /root/.ssh
            chmod 600 /root/.ssh/authorized_keys
            %end


    配置tftp服务
        systemctl enable tftp.socket
        systemctl start tftp.socket
    配置DHCP服务
    vim /etc/dhcp/dhcpd.conf
        option domain-name "example.com";
        default-lease-time 600;
        max-lease-time 7200;
        subnet 192.168.100.0 netmask 255.255.255.0 {
            range 192.168.100.1 192.168.100.200;
            filename "pxelinux.0";
            next-server 192.168.100.100;
        }
        systemctl enable dhcpd
        systemctl start dhcpd
    准备启动相关文件
    mkdir /var/lib/tftpboot/pxelinux.cfg/
    cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
    cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/                    # 关键文件
    cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default        # 启动菜单
        文件列表如下:
        /var/lib/tftpboot/
        ├── initrd.img
        ├── menu.c32
        ├── pxelinux.0
        ├── pxelinux.cfg
        │ └── default
        └── vmlinuz
准备启动菜单
    Vim /var/lib/tftpboot/pxelinux.cfg/default
        default menu.c32
        timeout 600
        menu title PXE INSTALL MENU
        label auto
            menu label Auto Install CentOS 7
            kernel vmlinuz
            append initrd=initrd.img ks=http://192.168.100.100/ks/centos7.cfg
        label manual
            menu label Manual Install CentOS 7
            kernel vmlinuz
            append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7
        label local
            menu default
            menu label ^Boot from local drive
            localboot 0xffff
到此,centos7的基于PXE的自动安装就准备完成
配置Centos6基于PXE的自动安装
    安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
    1 安装相应软件包
        yum install dhcp httpd tftp-server syslinux
        chkconfig tftp on
        chkconfig xinetd on
        chkconfig httpd on
        chkconfig dhcpd on
        service httpd start
        service xineted start
    2 准备Yum 源和相关目录
        mkdir -pv /var/www/html/centos/{6,ks}
        mount /dev/sr0 /var/www/html/centos/6
    3 准备kickstart文件
        /var/www/html/centos/ks/centos6.cfg
        cp /root/anaconda-ks.cfg  /var/www/html/ks/centos6.cfg
        vim /var/www/html/ks/centos6.cfg
        url --url=http://10.0.0.7/centos/6/os/x86_64
        text
        reboot
        firewall --disabled
        selinux --disabled
        clearpart --all
        zerombr
        #repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
        #安装包按需
        #安装后脚本按需
        
        注意权限:
        chmod 644 /var/www/html/centos/ks/centos6.cfg
    4 准备相关的启动文件
        mkdir /var/lib/tftpboot/pxelinux.cfg/
        cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
        cd /misc/cd/images/pxeboot/
        cp vmlinuz initrd.img /var/lib/tftpboot
        Cd /misc/cd/isolinux/
        cp boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot
    5 准备启动菜单文件
        cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
        vim /var/lib/tftpboot/pxelinux.cfg/default
        default vesamenu.c32 指定菜单风格
        #prompt 1
        timeout 600
        display boot.msg
        menu background splash.jpg
        menu title Welcome to wang CentOS 6
        menu color border 0 #ffffffff #00000000
        menu color sel 7 #ffffffff #ff000000
        menu color title 0 #ffffffff #00000000
        menu color tabmsg 0 #ffffffff #00000000
        menu color unsel 0 #ffffffff #00000000
        menu color hotsel 0 #ff000000 #ffffffff
        menu color hotkey 7 #ffffffff #ff000000
        menu color scrollbar 0 #ffffffff #00000000
        label auto
            menu label ^Automatic Install Centos6
            kernel vmlinuz
            append initrd=initrd.img ks=http://192.168.100.100/centos/ks/centos6.cfg
        label manual
            menu label ^Manual Install Centos
            kernel vmlinuz
            append initrd=initrd.img inst.repo=http://192.168.100.100/centos/6
        label local
            menu default
            menu label Boot from ^local drive
            localboot 0xffff
            
        目录结构如下:
        tree /var/lib/tftpboot/
        /var/lib/tftpboot/
        ├── boot.msg
        ├── initrd.img
        ├── pxelinux.0
        ├── pxelinux.cfg
        │ └── default
        ├── splash.jpg
        ├── vesamenu.c32
        └── vmlinuz    
     6 配置dhcp服务
    cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
    vim /etc/dhcp/dhcpd.conf
        option domain-name "magedu.com";
        option domain-name-servers 192.168.100.1;
        subnet 192.168.100.0 netmask 255.255.255.0 {
            range 192.168.100.1 192.168.100.200;
            option routers 192.168.100.1;
            filename "pxelinux.0";
            next-server 192.168.100.100;
        }
    service dhcpd start    
配置基于PEX的Centos6和Centos7的自动安装
    挂载6、7的安装文件到相应目录
        添加新光驱
        scandisk
        lsblk
        mount /dev/cdrom /www/html/centos/6/os/x86_64/
        mount /dev/cdrom1 /www/html/centos/7/os/x86_64/
    拷贝应答文件ks6-mini.cfg到相关目录
        cp ks6-mini.cfg /var/www/html/centos/6/ks6-mini.cfg
    在tftpboot文件夹下新建linux6和Linux7两个目录
        mkdir /var/lib/tftpboot/linux{6,7}
    将7的关键文件拷贝到linux7目录下
        mv vmlinuz initrd.img linux7
    将6的关键文件拷贝到linux6下
        cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinuz,initrd.img} linux6/
    修改启动菜单
        vim /var/lib/tftpboot/pxelinux.cfg/default
            default menu.c32
            timeout 600
            menu title PXE INSTALL MENU
            label auto
                menu label ^Auto Install CentOS 7
                kernel linux7/vmlinuz
                append initrd=linux7/initrd.img ks=http://10.0.0.7/centos/7/ks7-mini.cfg
            label manual
                menu label ^Auto Install CentOS 6
                kernel linux6/vmlinuz
                append initrd=linux6/initrd.img ks=http://10.0.0.7/centos/6/ks6-mini.cfg
            label local
                menu default
                menu label ^Boot from local drive
                localboot 0xffff

7、搭建Cobbler实现自动化安装系统

cobbler安装
    安装epel源
        yum install epel-release
        yum install cobbler dhcp
    设置相关服务为开机自启
        systemctl enable httpd dhcpd tftp cobblerd
    配置cobbler服务
        systemctl start cobblerd tftp httpd
        cobbler check
        按照提示依次修改配置就可以完成整个自动安装的配置
        1.vim /etc/cobbler/settings
            384行,修改127.0.0.1为服务器真实ip
        2.vim /etc/cobbler/settings
            272行,修改next_server为真实ip
        3.vim /etc/cobbler/settings
            101行,default_password_crypted: "$1$fx2SC2oE$Voz8JG3zk1dGxAvsNoH0w."
            用openssl passwd -1生成新口令,将新口令替换默认口令
        4.vim /etc/cobbler/settings
            242行,manage_dhcp: 0 修改为1    cobbler自动配置dhcp
        5.根据提示安装pykickstart
            yum install pykickstart
        6.使用cobbler get-loaders下载相关配置文件
            自动下载文件到/var/lib/cobbler/loaders
            执行cobbler sync,同步/var/lib/cobbler/loaders的文件到/var/lib/tftpboot/7.修改cobbler dhcp模板文件
            rpm -ql cobbler|grep dhcp
            vim `rpm -ql cobbler|grep dhcp`
                把网段、ip相关信息修改成正确的
        8.重启cobbler服务
            systemctl restart cobbler
        9.cobbler sync重新同步,就会同时修改并启动dhcp服务
    定义应答文件和yum源
        cobbler import光盘就可以自动生成应答文件和yum源
        cobbler import --help
        Options:
          -h, --help            show this help message and exit
          --arch=ARCH           OS architecture being imported        # 32/64位
          --breed=BREED         the breed being imported
          --os-version=OS_VERSION
                                the version being imported
          --path=PATH           local path or rsync location        # 来源路径
          --name=NAME           name, ex 'RHEL-5'                    # 菜单选项名称
          --available-as=AVAILABLE_AS
                                tree is here, don't mirror
          --kickstart=KICKSTART_FILE                                # 应答文件
                                assign this kickstart file
          --rsync-flags=RSYNC_FLAGS
                                pass additional flags to rsync
        cobbler import --path=/mnt --name=Centos-7.5-x86_64 --arch=x86_64
            会将光盘等内容复制到/var/www/cobbler/ks_mirror/定义的文件名/ 这个路径下
            du -sh /var/www
            tree -d -L 2 /var/www/
            /var/www/
            ├── cgi-bin
            ├── cobbler
            │   ├── images
            │   ├── ks_mirror
            │   ├── links
            │   ├── localmirror
            │   ├── misc
            │   ├── pub
            │   ├── rendered
            │   ├── repo_mirror
            │   └── svc
            └── html
        再生成个centos6的
        cobbler import --path=/mnt --name=Centos-7.5-x86_64 --arch=x86_64
        cobbler sync同步
        cat /var/lib/tftpboot/pxelinux.cfg/default                    # 可以看到菜单已更新
        
    自定义ks文件
        不修改kickstart文件,cobbler会自动生成一个默认的最小化安装配置文件
        如果需要自定义ks文件
        需要将ks文件上传至/var/lib/cobbler/kickstarts/
            可修改配置文件中的url
                url --url=$tree
        查看cobbler现有的源列表
            cobbler distro list                                        # 安装菜单选项
            cobbler profile list                                    # 安装方法列表
        将cobbler菜单项与安装配置文件关联
            cobbler profile add --name=Centos-7.5-x86_64-mini --distro=Centos-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7-mini.cfg
            cat /var/lib/tftpboot/pxelinux.cfg/default
                可以看到刚才添加的菜单项
        
        删除菜单        
            cobbler distro list
            cobbler profile remove --name=菜单项中需要删除的列表名称
        菜单改名
            cobbler distro list
            cobbler profile rename --name=xxx --newname=xxxx

图形配置cobbler
    安装cobbler-web
        yum install cobbler-web
    配置文件
        rpm -qc cobbler-web
            /etc/httpd/conf.d/cobbler_web.conf
    访问cobbler-web
        https://10.0.0.202/cobbler_web
        登陆cobbler/cobbler
        
        访问报500错误解决方法
            原因,Django版本不符
            #下载pip.py
        wget https://bootstrap.pypa.io/get-pip.py

          #调用本地python运行pip.py脚本
            python get-pip.py

          #安装pip
            pip install Django==1.8.9

          #查看pip版本号
            python -c "import django; print(django.get_version())"

          #重启httpd
            systemctl restart httpd
    
    修改验证方式
        vim /etc/cobbler/modules.conf
            23 module = authn_configfile                        # 定义了验证方式
            8 #    authn_configfile -- use /etc/cobbler/users.digest (for basic setups)        # 定义了文件路径
        cat  /etc/cobbler/users.digest
            cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3    # 定义了用户名密码,中间大写的Cobbler是标识了作用域
        新建用户
            htdigest --help
            htdigest /etc/cobbler/users.digest Cobbler admin    # 在users.digest文件中的Cobbler域中新建admin账号,域就是生效的软件
            输入两遍密码,用新用户名密码登陆
            
    修改验证方式为PAM
        vim /etc/cobbler/modules.conf
            23 module = authn_configfile
               module = authn_pam
        同时,还会将用户文件放到/etc/cobbler/users.conf中
            useradd -s /sbin/nologin cobbleradmin                # 新建用户
            echo 123456|passwd --stdin cobbleradmin
        vim /etc/cobbler/users.conf
            [admins]
            admin = "cobbleradmin"
        systemctl restart cobblord
        

 

posted @ 2019-08-27 09:28  李卓航  阅读(343)  评论(0编辑  收藏  举报