expect实现自动分发密钥、网站度量术语
1.优化ssh命令
sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\n UseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config 保障服务器安全: a.用密钥登录,不用密码; b.尽量不配外网ip; c.跳板机iptables封闭ssh,指定源IP限制; d.开启ssh只监听内网ip; e.拨号连接VPN,由vpn去连接跳板机; 通过ssh连接其他linux语法: ssh -p端口 用户@IP 通过scp拷贝文件、目录的语法: scp -P端口号 文件名 用户名@IP:目标地址 推送:scp -P端口号 -rp 目录名 用户名@IP:目标地址 拉取到本地:scp -P52113 -rp oldboy@IP:/tmp/etc /data
2.非交互式创建密钥
第一步--所有机器创建用户及密码
useradd oldgirl echo 123456|passwd --stdin oldgirl su - oldgirl
第二步--主机名为m01上创建密钥对(两种方法)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1 echo -e "\n" | ssh-keygen -t dsa -N "" > /dev/null 2>&1 # 如果是默认的22端口,则: ssh-copy-id -i ~/.ssh/id_dsa.pub oldgirl@172.16.1.41 # 特殊端口分发: ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.41" # 目标主机的.ssh/authorized_keys发生变化, # 为什么是这个文件?(配置文件做了设置) grep authorized_keys /etc/ssh/sshd_config #AuthorizedKeysFile .ssh/authorized_keys
以普通用户的身份进行操作,在m01上将/etc/hosts先拷到oldgirl的家目录下,
然后想把hosts拷到目标主机的/etc/hosts,发现权限拒绝,该如何解决这个问题呢?
a.制作密钥对时以root身份,但这样会导致服务器不安全,故不用; b.sudo提权,实现没有权限的用户,去操作主机 # 配置/etc/sudoers(在目标主机) echo "oldgirl ALL=(ALL) NOPASSWD: /usr/bin/rsync" >> /etc/sudoers visudo -c # 检查语法 scp -P52113 hosts oldgirl@172.16.1.31:~ ssh oldgirl@172.16.1.31 -t rsync ~/hosts /etc/hosts # -t参数表示开启终端,ssh指定端口时,用大写或者小写的p都可以 # 出现这种结果表明执行成功--Connection to 172.16.1.31 closed. # 如果数据量比较大,想用rsync去增量拷贝,可以用隧道模式 rsync -avz hosts -e 'ssh -p 22' oldgirl@172.16.1.31:~ c.以suid的方式(仅当做一种方法即可) # 将目标主机上的命令增加s权限 chmod u+s `which rsync # 在m01上'曲线救国' scp -P52113 hosts oldgirl@172.16.1.31:~ ssh -P52113 oldgirl@172.16.1.31 rsync ~/hosts /etc/hosts
3.expect实现自动分发密钥
# 在m01(0.61)、nfs01(0.31)、web01(0.8)上先创建用户 useradd oldgirl888 echo 123456|passwd --stdin oldgirl888 # 在m01上安装expect并生成oldgirl888的密钥对 yum -y install expect su - oldgirl888 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1
分发密钥的exp脚本
cat send_sshkey.exp #!/usr/bin/expect if { $argc != 2 } { send_user "usage: expect send_sshkey.exp file host\n" exit } # define var 定义变量 set file [lindex $argv 0] set host [lindex $argv 1] set password "123456" #spawn scp /etc/hosts root@10.0.0.41:/etc/hosts #spawn scp -P52113 $file oldboy@host:$dir spawn ssh-copy-id -i $file oldgirl888@$host expect { "yes/no" {send "yes\r";exp_continue} "*password" {send "$password\r"} } expect eof exit -onexit { send_user "good bye...\n" } #example #expect send_sshkey.exp ~/host 10.0.0.31:~ # 分发并检验 expect send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.31 ssh oldgirl888@172.16.1.31 /sbin/ifconfig eth0
4.在脚本中调用expect脚本
cat send_sshkey.sh #!/bin/bash . /etc/init.d/functions for ip in 8 31 41 do expect /home/oldgirl888/send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$ip >/dev/null 2>&1 if [ $? -eq 0 ];then action "$ip" /bin/true else action "$ip" /bin/false fi done
5.分发密钥步骤总结(有个描述该总结的脚本,在视频中):
1.所有服务器上禁止root登录,得有一个普通用户,如:oldgirl888,密码统一为123456; 2.sudo提权,echo "oldgirl888 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers 3.在m01上切换到oldgirl888,执行脚本,脚本的内容是: 创建oldgirl888密钥对,给多台服务器分发此密钥,然后分发执行脚本,最后执行此脚本.
6.安装saltstack(事先安装了epel源)
yum -y install salt-master yum -y install salt-minion chkconfig salt-master on chkconfig salt-minion on
7.生产环境常见的HTTP状态码列表
200 - OK,服务器成功返回网页; 301 - Moved Permanently(永久跳转),请求的网页已永久跳转到新位置; 客户端错误: 403 - Forbidden(禁止访问),服务器拒绝请求 404 - Not Found,服务器找不到请求的页面 服务器端错误: 500 - Internal Server Error(内部服务器错误); 502 - Bad Gateway(坏的网关), 一般是网关服务器请求后端服务时,后端服务没有按照http协议正确返回结果; 503 - Service Unavailable(服务当前不可用),可能因为超载或停机维护; 504 - Gateway Timeout(网关超时), 一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务.
8.伪静态网页小结
a.利用rewrite技术将动态网页伪装成静态页面(URL地址改写); b.便于搜索引擎收录提升用户访问量以及用户体验; c.性能没有提升,并且转换成伪静态会消耗资源,因此性能不升反降; d.尽可能将动态网页转换成真正的静态页面; e.并发不是很大或动态更新过于频繁时,用rewrite实现伪静态也不错; f.伪静态网页的实现,一般是由运营产品提出需求,开发和运维共同实现的.
9.网站流量--度量术语
a.IP 通过独立IP度量网站访问量,和实际的访问情况不是很匹配,国内的企业、学校多数是用 NAT上网,一个独立IP背后可能有数十上百个客户端,独立IP虽然不是很准确,但也是运维 人员比较关心的一个衡量网站的指标. b.PV 页面点击量,不管客户端或IP是不是相同,页面被访问一次就算一个PV c.UV(Unique Visitor) 独立访客,同一台客户端访问网站被认为是一个访客,一天内同一个客户端访问同一个网站 只计算一次UV,一般以Cookie为统计依据. d.知名网站访问量信息参考 网站 独立IP/日 PV数/日 网站并发数 服务器数 www.51cto.com 58万 130万 1万 几十台 www.58.com 140万 2300万 1万-3万 几百台 www.taobao.com 4600万 5亿 几十万-百万 万台 并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响, 并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量. 比如有10万用户同时在线,本地缓存和CDN就挡住了90%,剩下的10%才会和服务器产生交互. 网站并发量计算(仅当参考):https://blog.csdn.net/qq_41718455/article/details/82048390