美文网首页
Linux的PXE实现及Cobbler实现学习笔记

Linux的PXE实现及Cobbler实现学习笔记

作者: Villa_7ca5 | 来源:发表于2019-05-26 15:24 被阅读0次

    1、实现sshd免密登录

    1.Linux下生成密钥

    ssh-keygen的命令手册,通过”man ssh-keygen“命令:
    通过命令”ssh-keygen -t rsa“
    生成之后会在用户的根目录生成一个 “.ssh”的文件夹
    进入“.ssh”会生成以下几个文件
      authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
      id_rsa : 生成的私钥文件
      id_rsa.pub : 生成的公钥文件
      know_hosts : 已知的主机公钥清单
        
    如果希望ssh公钥生效需满足至少下面两个条件:
      1) .ssh目录的权限必须是700
      2) .ssh/authorized_keys文件权限必须是600

    2.远程免密登录

    常用以下几种方法:

    2.1 通过ssh-copy-id的方式
    命令: ssh-copy-id -i ~/.ssh/id_rsa.put <romte_ip>
    

    常见错误:

    [root@test ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.37.135
    -bash: ssh-copy-id: command not found //提示命令不存在
    解决办法:yum -y install openssh-clients
    
    2.2 通过scp将内容写到对方的文件中
    命令:scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
    
    也可以分为两步操作:
    $ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
    $ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中,不过要登录远程服务器来执行这条命令
    
    2.3 通过Ansible实现批量免密
    2.3.1 将需要做免密操作的机器hosts添加到/etc/ansible/hosts下:
    [Avoid close]
    192.168.37.132
    192.168.37.133
    192.168.37.134
    
    2.3.2 执行命令进行免密操作
    ansible <groupname> -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k
    
    2.4 手工复制粘贴的方式
    将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中
    

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

    1.Dropbear简介

    Dropbear是一款基于ssh协议的轻量sshd服务器,与OpenSSH相比,他更简洁,更小巧,运行起来占用的内存也更少,但他们都是用于实现ssh安全远程登录协议的,系统默认安装有openssh,而dropbear是基于epel源的,需要自己下载安装。 Dropbear特别用于“嵌入”式的Linux(或其他Unix)系统,如无线路由器。
    本文介绍在嵌入式的环境中的安装步骤。

    2.Dropbear编译安装

    1) 下载dropber源码包并安装开发包组
    在PC机上下载源码包 
    地址:https://matt.ucc.asn.au/dropbear/releases/dropbear-2016.74.tar.bz2 
    
    在Linux下接收源码包并解压 
    [root@centos7 program]# tar -jvxf dropbear-2016.74.tar.bz2
    
    在Linux上安装开发包组
    [root@centos7 program]# yum groupinstall Development tools
    
    2)到解压的源码包路径下,并编译安装(一定要先安装前面第一步骤里的“”development tools”这个包组,否则会频繁报错)
    [root@centos7 program]# cd dropbear-2016.74
    [root@centos7 program]# ./configure --prefix=/usr/local/dropbear/ --sysconfdir=/etc/dropbear/
    [root@centos7 dropbear-2016.74]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
    [root@centos7 dropbear-2016.74]# sudo make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install   
    

    其中–prefix=/usr/local/dropbear/指定安装后的总目录位置,–sysconfdir=/etc/dropbear/是指定其配置文件存放路径。根据INSTALL文件的提示,进行第make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp”(只写make也行),在这个过程按道理说不会再出错的。

    make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp” install;可以看到下载的文件,在/usr/local/dropbear下。
    其中:bin下的是客户端程序;sbin下的是服务端程序;/usr/local/dropbear/bin/dbclient就相当于ssh协议。

    3)编译安装完成后验证

    在下载过程中,并没有将我们指定的/etc/dropbear生成,先建文件夹mkdir/etc/dropbear,而且我们服务端运行的话需要KEY,所以我们要先生成key(输入命令:cat README):
    在这里选择用的rsa加密,执行命令

    3.启动服务测试

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

    场景一:给普通用户chen以root权限,能以root身份执行任何命令(例如执行passwd改密码)

    我们首先要在root身份下执行visudo,编辑/etc/sudoers策略文件,给用户chen以root权限。

    1.直接命令行输入visudo,不带任何参数
    2.在策略文件末尾附近,找到
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    3.新加入一行
    chen   ALL=(ALL)       ALL
    4.保存退出
    

    ==>到此为止,用户chen已经有“root权限”

    例如要用root身份创建一个example.json的空文件:

    [chen@centos7 ~]$ sudo touch example.json
    

    输出:

    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    
        #1) Respect the privacy of others.
        #2) Think before you type.
        #3) With great power comes great responsibility.
    
    [sudo] password for chen:
    

    此时应当输入用户chen的密码。

    场景二:sudo免密

    我们使用sudo时,在间隔一段时间后总会要求输入当前用户(chen)的密码,用以供系统确认“执行sudo的确实是chen本人”。
    能否忽略掉这一验证,让系统不校验身份,总是认为执行root的是chen本人

    通过执行visudo命令,修改/etc/sudoers策略文件:
    将:chen ALL=(ALL) ALL
    改为:chen ALL=(ALL) NOPASSWD: ALL
    保存退出。
    

    这次,无论间隔多长时间,系统都不需要再次对chen用户进行密码鉴权,而总是认为“是chen用户本人在执行sudo及后续命令”。

    场景三:sudo 用户组 免密

    让所有归属于chen的用户组的用户,都拥有同一权限。

    visudo修改/etc/sudoers,
    将chen ALL=(ALL) NOPASSWD: ALL
    改为:%chen ALL=(ALL) NOPASSWD: ALL
    注意chen之前的百分号,指代后面的chen是一个用户组。
    

    现在有一个普通用户test2019:

    [test2019@centos7 ~]$ id
    uid=501(test2019) gid=501(test2019) groups=501(test2019) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    

    将其加入到chen用户组:

    [root@centos7 ~]# usermod -a -G chen test2019
    

    再查看test2019的用户组:

    [test2019@centos7 ~]$ id
    uid=501(test2019) gid=501(test2019) groups=501(test2019),500(chen) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    

    在test2019用户身份下切到root用户身份:

    [test2019@centos7 ~]$sudo su - 
    [root@centos7 ~]#
    

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

    scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。
    rsync是复制,如果有重复的文件,会直接跳过,而且他自己的算法优化。

    scp是把文件全部复制过去,当文件修改后还是把所有文件复制过去,
    rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去。

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

    (1)在CentOS7上安装DHCP软件包

    [root@CentOs7 ~]# yum -y install dhcp
    

    (2)修改DHCP的配置文件

    [root@CentOs7 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf 
    

    将样板拷贝到并替换配置文件。
    在配置文件中加入这么一段

    subnet 172.25.0.0 netmask 255.255.0.0{
      range 172.25.0.50 172.25.0.253;
    }
    

    其中subnet 和netmask分别代表网段号和子网掩码号。可以按需求选择三种private ip中的任意一种。
    range代表你要划分的ip池的范围。

    (3)关闭VMvare自带的dhcp服务器,然后所有需要分配ip的主机都使用这一张网卡。

    取消网卡

    我们取消掉该网卡的DHCP服务,并且让所有主机都接入这张网卡。

    (4)服务机上启动DHCP服务器

    [root@CentOs7 ~]# systemctl start dhcpd.service  
    

    (5)Client上重新启动网卡

    [root@CentOs7 ~]# systemctl restart network
    

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

    一:以http方式实现PXE 安装必备软件;

    yum -y install tftp-server dhcp httpd syslinux system-config-kickstart
    

    搭建前准备:
    关闭防火墙: 临时: systemctl stop firewalled
    永久: systemctl disabled firewalled
    关闭selinux: 临时: setenforce 0
    永久:sed -i 's/=enforcing/=disabled/' /etc/selinux/config

    1.  tftp的工作目录 : /var/lib/tftpboot/
    2.  进入到镜像的挂载目录的isolinux,复制 cp initrd.img isolinux.cfg vmlinuz /var/lib/tftpboot/
    3.  cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    4.  进入 /var/lib/tftpboot/ ,创建pxelinux.cfg目录, mkdir pxelinux.cfg 重命名isolinux.cfg ; mv isolinux.cfg pxelinux.cfg/default
    5.  修改default文件  ,找到第一行 default linux 找到 label linux 那行:append initrd=initrd.img ks=[http://192.168.37.128/ks/ks.cfg](http://192.168.37.128/ks/ks.cfg) quiet
    6.  修改/etc/xinetd.d/tftp文件  ; disable = no
    7.  配置/etc/dhcp/dhcpd.conf文件。 subnet 192.168.37.0 netmask 255.255.255.0 {
    range 192.168.37.60 192.168.37.80;
    next-server 192.168.37.128;
    filename "pxelinux.0";
    }
    8.  进入/var/www/html/ ;mkdir cdrom ks
    mount /dev/cdrom cdrom
    9.  修改yum库的名称为 [development]
    10.  执行system-config-kickstart ,前提要图形界面的系统
    11.重启服务: systemctl restart httpd
      systemctl restart dhcpd
      systemctl restart tftp
    12.创建一台新的虚拟机,内存要大于1024,让它自动获取IP,自动安装。
    

    二:以ftp方式实现自动安装 方法相同,ftp工作目录/var/ftp

    http工作目录 /var/www/html 只需将对应的文件修改位置即可。
    

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

    (1)yum install cobbler dhcp

    systemctl start cobblerd httpd tftp 
    

    (2)cobbler check

    default_password_crypted: "$1$rHH5STtx$dI7Yo3.FmxbqA3cokkPg71" 
    next_server: 192.168.32.17
    server: 192.168.32.17
    manage_dhcp: 1
    

    (3)cobbler get-loaders 下载boot loaders

    (4) vim /etc/cobbler/dhcp.template

    subnet 192.168.36.0 netmask 255.255.255.0 {
    option routers             192.168.36.5;
    option domain-name-servers 192.168.1.1;
    option subnet-mask         255.255.255.0;
    range dynamic-bootp        192.168.32.100 192.168.36.254;
    

    (5) systemctl restart cobblerd

    cobbler sync     
    

    (6) cobbler import --path=/misc/cd/ --name=Centos7.5-x86_64--arch=x86_64

    (7)cp ks_centos7.cfg /var/lib/cobbler/kickstarts/ks7.cfg

    --url=$tree
    

    (8) cobbler profile add --name=Centos7.5-x86_64_desktop --distro=Centos7.5-x86_64 --kickstart=ks7.cfg

    相关文章

      网友评论

          本文标题:Linux的PXE实现及Cobbler实现学习笔记

          本文链接:https://www.haomeiwen.com/subject/tmbxtctx.html