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

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 

常见错误:

[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@:/root/.ssh/authorized_keys
也可以分为两步操作:
$ scp ~/.ssh/id_rsa.pub root@: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  -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实现学习笔记)