第十周作业
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.bz2 • 3、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 2048 • 12、/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.1 • 15、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