linux打怪升级之旅-04
SSH批量分发与管理方案小结:
1.利用root做ssh key验证
优点:简单,易用
缺点:安全差,同时无法禁止root远程连接
企业应用:80%的企业
2.利用普通用户来做,思路是先把分发的文件拷贝到服务器用户家目录,然后sudo提权
拷贝到服务器的对应权限目录
优点:安全
缺点:配置复杂
3.拓展:同方案2,只是不用sudo,而是设置suid对固定命令提权
优点:相对安全
缺点:复杂,安全性较差。任何人都可以处理带有suid权限的命令。
建议:
a.追求简单,选 1
b.追求安全建议,选 2
重要安全思想:
不管用什么方法,我们一定要管理好中心分布服务器A,因为它的权限很大,很重要。那么如何,管理好中心分布服务器A呢?
1)取消中心分布服务器的外网IP。
2)开启防火墙禁止SSH对外用户登陆。并仅给某一台后端无外网机器访问。然后这台后端的服务器依然没有外网IP,并
且仅能通过VPN连接,这样中心分布服务器就相对安全了。
企业级生产场景批量管理,自动化管理方案:
1.最简单最常用 ssh key,功能最强大的。一般中小型企业会用,50-100台以下。
2.sina cfengine较早的批量管理工具。现在基本没有企业用。
3.门户级别比较流行的,puppet批量管理工具,复杂,笨重。
4.saltstack批量管理工具,特点:简单,功能强大(配置复杂)
5.http+cron
SSH登陆服务器慢的问题解决
三种可能情况:
1.服务器上的/etc/resolv.conf中有错误的dns地址,或为内网地址或为不可用dns地址
2.sshd_config配置文件中使用了UseDNS yes(若为注释的,默认也是启用的),使用UseDNS no
3.sshd_config配置文件中使用了GSSAPIAuthentication yes,默认是这样的,改为:GSSAPIAuthentication no,或者注释掉,
SSH慢的原因(常见)
故障现象
执行ssh [email protected]反应非常的慢,等很久的时间才连接进去
故障分析
一般是hosts文件的127.0.0.1和主机名不对应导致的
解决方法
1.hosts文件主机名不对应导致的
2.sshd_conf配置文件的验证没有取消掉
########################################################################################
课前思想
1.道德品质存在缺陷之人不能用(小人不能用)
2.一个不懂得感恩之人不能培养(白眼狼)
3.一个本身素质不高,但又缺乏接受他人调教之人,不值得去培养(固本自封之人不堪培养)
4.接受能力,领悟能录不高,不堪培养(”朽木“之人不堪任用)
5.一个没有忠诚度而言之人不能任用的。(”墙头草“之人不堪任用)
########################################################################################
[oldboy@backup ~]$ sh -h fenfa2.sh
: 没有那个文件或目录etc/init.d/functions
[oldboy@backup ~]$ dos2unix fenfa2.sh
dos2unix: converting file fenfa2.sh to UNIX format ...
[oldboy@backup ~]$ sh fenfa2.sh
USAGE:/bin/sh fenfa2.sh arg1 arg2
老铁 我刚将脚本完成成功后 然后sz上传 再rz下载 然后报上面的错 ,然后一个前辈说上传后格式可能变了 然后用上述的方法解决
在Windows下面编辑的要到linux中用需要unix2dos转
反之用dos2unix
########################################################################################
[root@backup ~]# /sbin/ifconfig eth0|sed -rn 's#^.*dr:(.*) Bc.*$#\1#gp'
10.0.0.41
sendmail 发送邮件的两种方法
expect非交互式批量分发密钥
########################################################################################
同步方法
scp NFS SFTP http samba rsync drbd(基于文件系统同步)
企业常用rsync+inotify实现实时同步
本主机备份
[root@nfs01 opt]# cd /opt/
[root@nfs01 opt]# mkdir oldboy
[root@nfs01 opt]# touch oldboy/test.txt
[root@nfs01 opt]# chmod -R 700 oldboy/
[root@nfs01 opt]# ls -l
总用量 4
drwx------ 2 root root 4096 5月 28 15:04 oldboy
[root@nfs01 opt]# tree
.
└── oldboy
└── test.txt
1 directory, 1 file
[root@nfs01 opt]# ls -l oldboy/test.txt
-rwx------ 1 root root 0 5月 28 15:04 oldboy/test.txt
[root@nfs01 opt]# rsync -avz ../opt/ /tmp/
sending incremental file list
./
oldboy/
oldboy/test.txt
sent 114 bytes received 38 bytes 304.00 bytes/sec
total size is 0 speedup is 0.00
[root@nfs01 opt]# cd /tmp/
[root@nfs01 tmp]# ll
总用量 8
-rw-r--r-- 1 root root 158 5月 26 14:39 hosts
drwx------ 2 root root 4096 5月 28 15:04 oldboy
[root@nfs01 tmp]#
[root@nfs01 tmp]# ll
总用量 8
-rw-r--r-- 1 root root 158 5月 26 14:39 hosts
drwx------ 2 root root 4096 5月 28 15:04 oldboy
[root@nfs01 tmp]# tree
.
├── hosts
└── oldboy
└── test.txt
1 directory, 2 files
[root@nfs01 tmp]# ls -l oldboy/
总用量 0
-rwx------ 1 root root 0 5月 28 15:04 test.txt
[root@nfs01 tmp]# cd -
/opt
####################################################################################
rsyncd 配置使用
查询rpm -qa | grep rsync
配置文件需手动创建:
touch /etc/rsyncd.conf
配置/etc/rsyncd.conf:
(全局配置)
uid = root //rsync以root用户身份运行
gid = root //rsync以root用户组身份运行
port = 873 //rsync守护进程监听的端口号
address = 172.30.100.111 //指定服务器运行的IP地址
pid file = /var/run/rsyncd.pid //rsync的守护进程将其PID写入指定的文件
use chroot = yes //是否启用chroot功能,如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
max connections = 300 //最大并发连接数
timeout = 600 //超时时间
lock file=/var/run/rsyncd.lock //lock文件路径
log file = /var/log/rsyncd.log //log文件路径
log format = %t %a %m %f %b //log格式
(用户配置)
[172_30_100_112] //模块名称
path = /app/111 //真实路径
comment = Backup Log //注解
read only = no //是否允许客户上传文件
list = yes //是否把rsync 服务器上提供同步数据的目录显示
ignore errors = yes //忽略IO错误
auth users = RsyncUser //认证用户名
secrets file = /etc/rsync-applog.pas //密码文件路径
hosts allow = 172.30.100.112 //白名单
hosts deny = * //黑名单
配置服务器端密码文件:
touch /etc/rsync-applog.pas
RsyncUser:ZTkxywbz 一行为一组,用户名在前,密码在后,冒号隔开。
修改文件权限(必须为600):
chmod 600 /etc/rsync-applog.pas
配置客户端密码文件:
touch /etc/rsync-applog.pas
ZTkxywbz 只输入密码
修改文件权限(必须为600):
chmod 600 /etc/rsync-applog.pas
查看服务是否启动:
ps -ef | grep rsync
若没启动,启动服务:
/usr/bin/rsync --daemon --config=/etc/rsync.conf
再次查看是否启动成功:
ps -ef | grep rsync
rsync ≥ rm cp scp
########################################################################################
uniq:去重 -c:查看重复次数 ,计数
[root@nfs01 ~]# cat oldboy.txt
10.0.0.7
10.0.0.7
10.0.0.7
[root@nfs01 ~]# uniq oldboy.txt
10.0.0.7
[root@nfs01 ~]# uniq -c oldboy.txt
3 10.0.0.7
sort:排序 -n 顺序排序 -r 倒序排序
[root@nfs01 ~]# vim oldboy.txt
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.8
10.0.0.7
10.0.0.7
10.0.0.9
[root@nfs01 ~]# sort oldboy.txt
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.8
10.0.0.9
[root@nfs01 ~]# sort -nr oldboy.txt
10.0.0.9
10.0.0.8
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
10.0.0.7
[root@nfs01 ~]# sort -t " " -k 2 oldboy.txt.1 -t 指定分隔符 -k指定字段
10.0.0.7 a
10.0.0.7 k
10.0.0.9 l
10.0.0.7 m
10.0.0.7 n
10.0.0.8 o
10.0.0.7 q
10.0.0.7 y
10.0.0.7 z
-k, --key=位置1[,位置2] 在位置1 开始一个key,在位置2 终止(默认为行尾)
[root@nfs01 ~]# cat oldboy.log
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log
www.etiantian.org
www.etiantian.org
post.etiantian.org
mp3.etiantian.org
www.etiantian.org
post.etiantian.org
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log |sort
mp3.etiantian.org
post.etiantian.org
post.etiantian.org
www.etiantian.org
www.etiantian.org
www.etiantian.org
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log |sort|uniq
mp3.etiantian.org
post.etiantian.org
www.etiantian.org
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log |sort|uniq -c
1 mp3.etiantian.org
2 post.etiantian.org
3 www.etiantian.org
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log |sort|uniq -c |sort -rn
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log |sort -rn|uniq -c
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
[root@nfs01 ~]# awk -F "/" '{print $3}' oldboy.log |sort -rn -k1|uniq -c
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
[root@nfs01 ~]# awk -F "/" '{++S[$3]} END {for (key in S) print S[key],key}' oldboy.log |sort -rn -k1
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
[root@nfs01 ~]# awk -F "/" '{++S[$3]} END {for (key in S) print key,S[key]}' oldboy.log |sort -rn -k1
www.etiantian.org 3
post.etiantian.org 2
mp3.etiantian.org 1
########################################################################################
linux系统软件包安装方式
1.源码安装
2.yum或rpm安装
3.高级安装结合了编译和yum/rpm的双重优点
何时选择用上述三种方法
rpm -e --nodeps 不考虑依赖直接卸载掉
rpm -qa 检查是否安装
安装软件比如apache必看的两个文件:
进解压后的http目录下看
README
INSTALL
告诉你怎么安装
apache的模式两种
yum install -y zlib zlib-devel
一般出现以下错误:
cheching for zlib location ....not founf
就需要安装zlib zlib-devel 但主要的是zlib-devel 前面的zlib可以不要,这就是经验
大多数软件都需要gcc编译来生成需要的东西
设置软连接 这又是经验
########################################################################################
教新版apache的编译安装需要的方法 在我博客上有
https://blog.csdn.net/zisefeizhu/article/details/80218087
*/apachectl -t -l -M graceful平滑重启
ps -ef |grep
lsof -i :
wget 服务端IP 检查服务是否完好
curl
strace 命令:跟踪进程的使用情况 高级命令 必会
一般慢都是反解了。在/etc/hosts文件中加入解析
怎样添加模块?
bin
conf
htdocs
htpasswd
extra
httpd-mpm.conf
httpd-vhosts.conf
虚拟主机是什么?怎么用?虚拟主机分几类?怎么配置
所谓的基于XX,就是靠XX来区分站点
apache日志轮询?
apache怎么隐藏版本号?怎么隐藏重要信息 或修改总要信息?
########################################################################################
mysql 是什么?怎么安装?怎么简单使用?
mysql怎样下载?
安装mysql出错的解决思路
mysqladmin-uroot -p
什么是编译安装?怎么编译安装?思路?一般软件的编译安装方法
选择是什么版本的mysql?为什么?现在企业用的版本有哪些?版本所占的百分比
yum install -y ncurese-devel
echo $?怎么用?作用?
什么是免编译?怎么免编译?
mysql安装后默认的模板?怎么选?硬件配置决定模板
mysql初始化安装 怎么安装?怎么初始化数据目录
怎么判断是否错误?
mysql的启动脚本?怎么调到 /etc/init.d/mysqld 怎样使其执行 +x
怎样将mysqld加到环境变量里
怎样开机自启动
怎样杀死mysqld
标准杀死:mysqladmin shutdown
一些mysql的简单使用方法
怎么修改,创建密码,怎么查看表?怎样修改表?怎么创建,修改,删除用户,查看版本
有关LAMP请看我的下面博文
https://blog.csdn.net/zisefeizhu/article/details/80218087
这几条语句的作用
/application/mysql/bin/mysqld_safe --skip-grant-table &
update mysql.user set password=PASSWORD("oldboy123") where host='localhost' and user='root';
flush privileges;
########################################################################################
php动态解析软件安装。这不部分内容在我的博文:https://blog.csdn.net/zisefeizhu/article/details/80218087
与php安装有关的库?在我的博文里有最新的所需库
为什么需要这些库?即这些库的作用?了解即可
php怎么编译安装?请看我的博客https://blog.csdn.net/zisefeizhu/article/details/80218087
什么是编译安装?怎么知道安装软件时要怎样编译安装
php模块,区别?
小结:
1.正式配置文件一般关闭log,不输出log
2.默认配置文件路径/application/php/lib/php.ini
以上apache mysql php 的简单配置和应用请看https://blog.csdn.net/zisefeizhu/article/details/80218087
apache整合php软件的方法 视频 448
#####################################################################################