00.课程介绍部分
1.远程管理配置文件参数
2.批量管理防范入侵方法
3.批量管理服务概念作用
4.批量管理服务安装部署
4.批量管理服务配置应用
a 主机清单配置部分
b 掌握模块功能应用
c 掌握剧本功能配置
01.回顾总结
1.杀进程有三种方法
2.远程连接有两种方法
3.ssh密码信息连接原理
4.ssh远程秘钥连接原理
5.实现秘钥连接
6.想要实现批量分发公钥
第一步:实现免交互创建秘钥
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P ""
第二步:实现免交互发送公钥
1.不用yes
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7 -o StrictHostKeyChecking=no
2.不用密码
下载sshpass
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7 -o StrictHostKeyChecking=no
昨日作业解答:
1.如何利用xshell软件实现基于秘钥方式连接虚拟主机
vim /etc/ssh/sshd_config
47 AuthorizedKeysFile .ssh/authorized_keys
创建一个/root/.ssh/authorizer_keys后将创建的公钥复制粘贴放入文件中
2.批量分发秘钥时,每台主机密码不一样, 每台主机远程服务端口不一样
第一步:创建一个用户主机IP 端口 密码文件
cat >> /server/scripts/host_txt <
02.远程管理服务配置文件
/etc/ssh/sshd_config ---ssh服务端配置文件
/etc/ssh/ssh_config ---ssh客户端配置文件
#Port 22 ---指定服务端号
#ListenAddress 0.0.0.0 ---任意主机地址都进行监听
ps:所有服务监听的地址只能是本地网卡上有的地址
#PermitRootLogin yes ---是否允许root用户远程登录
#PubkeyAuthentication yes ---是否允许公钥连接
#PermitEmptyPasswords no ---是否允许无密码连接
GSSAPIAuthentication yes ---使用GSSAPI认证方式进行远程连接 影响ssh远程连接效率
#UseDNS yes ---是否进行DNS反向解析过程 影响ssh远程连接效率
03.远程管理防范入侵
1.尽量使用秘钥认证 不要使用密码认证(密码复杂 定期修改)
2.尽量让架构中的服务器没有外网网卡
3.对于拥有外网的服务器,做好服务地址监听,提高安全性
4.防火墙服务或硬件,根据业务情况,做安全访问控制 硬件:ACL访问控制
5.监控系统重要文件是否被修改 inotify 对比指纹信息(zabbix)
/etc/目录
/var/目录
6.给重要文件信息上锁 chattr
用户相关文件上锁: passwd shadow groupshadow
服务程序运行相关: rc.local profile.d/ crond
系统环境配置相关: profile bashrc ifcfg_eth0 reslove.conf rsyncd.cof
04.批量管理服务概念介绍 ansible saltstack
同时并行管理多台主机
a 实现批量分发数据信息
b 实现批量部署软件服务
c 实现批量收集系统信息 资产管理
d 实现批量自动管理应用 代码上线 服务重启 等
ansible软件特点
a 部署安装简单方便
b 软件不需要启动服务
c 客户端不需要进行配置
d 功能作用非常强大
05.ansible软件部署过程
管理端:
第一步:安装软件
yum install -y ansible
路径:/etc/ansible
ansible.cfg ---ansible程序配置文件 默认配置即可
hosts ---主机清单文件
roles
被管理端:
确认防火墙和selinux安全服务是否关闭
06.如何配置使用软件
ansible 管理谁 -m 模块信息 具体使用模块的什么参数信息
1.主机清单配置
vim /etc/ansible/hosts
172.16.1.41 ---ansible管理端可以管理的主机信息
主机清单配置方法:
官方参考: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
方法一:直接在hosts写上主机IP地址信息
172.16.1.7
172.16.1.31
172.16.1.41
进行测试:
ansible 172.16.1.7,172.16.1.31 -m ping ---单台或多台主机测试
ansible all -m ping ---对所有管理主机测试
方法二:安装分组信息进行配置
[rsync_server]
172.16.1.41
[rsync_client]
172.16.1.31
172.16.1.7
进行测试
ansible rsync_server -m ping ---对一个分组进行测试
方法三:设置管理主机连接参数(ansible程序内置变量)信息
172.16.1.41 ansible_user=root ansible_password=123456 ansible_port=22
---测试ip地址
backup ansible_host=172.16.1.41 ansible_user=root ansible_password=654321 ansible_port=22
---测试主机名
www.oldboy.com ansible_user=root ansible_password=654321 ansible_port=22
---测试域名
ansible_user --- 指定远程连接用户信息
ansible_password --- 指定远程连接用户密码
ansible_port --- 指定远程连接服务端口
ansible_host --- 可以使用主机名称进行管理 参数后面指定IP地址 参数前面指定主机名信息
方法四:嵌入式配置主机清单
[rsync:children]
rsync_sersver
rsync_client
[rsync_server]
172.16.1.41
[rsync_clinet]
172.16.1.31
172.16.1.7
进行测试:
ansible rsync -m ping ---测试rsync下的组
[rsync_clinet:vars] ---对管理中所有主机信息,统一设置变量
ansible_user=root
ansible_password=654321
ansible_port=22
方法五:使用匹配符号信息,匹配多个主机
[rsync_client]
172.16.1.[1:7]
[rsync_clinet]
web-[a:z]
遇到的问题:
问题一:
172.16.1.41 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 172.16.1.41 port 22: Connection refused",
"unreachable": true
}
排错方法:
01. 利用ssh命令远程连接测试
问题二:
172.16.1.41 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).",
"unreachable": true
}
排错:
01. 分发公钥信息
问题三:
[root@m01 ansible]# ansible 172.16.1.31 -m ping
[WARNING]: Could not match supplied host pattern, ignoring: 172.16.1.31
[WARNING]: No hosts matched, nothing to do
排错:
01. 修改主机清单信息
只有主机清单中定义主机信息,可以被ansible管理
2.掌握功能模块
第一个模块:command 命令模块 批量执行命令 默认模块
ansible all -m command -a "hostname"
第二个模块:shell 命令模块 批量执行命令 万能模块
ansible all -m shell -a "yum install -y htop"
ansible all -m shell -a "cd /tmp;pwd" ---command执行不了可以用shell
shell模块想批量运行脚本
第一步:编写脚本
第二步:将脚本文件进行分发
ansible all -m copy -a "src=分发的文件 dest=保存路径"
第三步:修改脚本权限
ansible all -m file -a "path=脚本路径 "
第三个模块:script 命令模块 批量运行脚本
第一步:编写脚本
第二步:批量执行脚本
ansible all -m script -a "脚本路径"
========================================================================================================
补充:如何学习模块使用方法:
01.简单了解模块作用
command – Execute commands on targets
02.模块详细说明
03.掌握模块参数用法
根据样例学习参数用法
补充:学习ansible会有不同颜色提示
01.绿色:对主机信息进行查看,操作执行成功
02.黄色:对主机信息进行查看,对主机中信息有调整修改,成功
03.紫色:错误提示信息,建议忠告信息
04.红色:报错提示信息
========================================================================================================
04.课程知识总结:
1.ssh配置文件
服务端:/etc/ssh/sshd_config
客户端:/etc/ssh/sshd_config
2.ssh远程管理防范入侵 共6点
3.ansible部署方法
yum install -y ansible
4.ansible的使用方法 ansible 主机清单 -m 模块
a 主机清单
/etc/ansible/hosts
1.直接在hosts中写ip地址
2.分组
3.内置变量
4.嵌入式 [xxx:chirldren] 批量添加内置变量 [组名:var]
5.使用匹配符号 172.16.1.[1:7]
b 模块信息
1.command模块
ansible 172.16.1.31 -m command -a "hostname"
2.shell
ansible 172.16.1.31 -m shell -a "cp /etc/hosts /tmp"
3.script
ansible 172.16.1.31 -m script -a "脚本信息"
作业:
01. ansible利用域名管理主机时, 每次都需要有yes/no确认, 如何实现免交互
02. 以下四个内置变量有什么用
ansible_become
ansible_become_method
ansible_become_user
ansible_become_password
03. 自学两个模块使用方法
expect – Executes a command and responds to prompts
telnet – Executes a low-down and dirty telnet command