Fork me on GitHub

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

 

posted @ 2018-12-10 18:14  法外狂徒  阅读(451)  评论(0编辑  收藏  举报