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

expect实现自动分发密钥、网站度量术语的更多相关文章

  1. 使用 expect 命令执行自动分发系统

    一.命令 except 实例详解 1. 介绍 expect 使用场景 expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动 ...

  2. expect实现自动交互由浅入深

    expect实现自动交互由浅入深 作为运维人员可以通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet ...

  3. ssh免密码登录之分发密钥

    ssh免密码登录之分发密钥 1.ssh免密码登录 密码登录和密钥登录有什么不同? 密码登录(口令登录),每次登录都需要发送密码(ssh) 密钥登录,分为公钥和私钥,公钥相当于锁,私钥相当于钥匙 1.1 ...

  4. ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:

    使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使 ...

  5. Linux expect实现自动登录

    expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法 ...

  6. ssh采用expect实现自动输入密码登录、拷贝

    1. 引言 最近做了一个项目,需要频繁与另一台主机进行文件的传输:中间想到了很多方式:FTP.samba.curl等,但是还是感觉scp最好用. SCP使用教程可参阅:http://www.jb51. ...

  7. 通过expect免自动输入密码登陆远程服务器

    通过expect免自动输入密码登陆远程服务器 1.前提必须已经安装expect 2.新建login.sh,文件内容如下 #!/usr/bin/expect -f spawn ssh root@140. ...

  8. 使用expect实现自动登录的脚本

    使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ######## ...

  9. ansible分发密钥

    http://www.361way.com/ansible-cfg/4401.html 修改host_key_checking(默认是check的):改为false,      host_key_ch ...

随机推荐

  1. 【Arduino开发板刷Bootloader01】

    其接线方式就是:   Programmer(工具开发板)                Being programmed(目标开发板)                              Vcc ...

  2. apicloud入门学习笔记1:简单介绍

    官网地址:https://www.apicloud.com/ 新手开发指南:https://docs.apicloud.com/APICloud/junior-develop-guide 开发语言:H ...

  3. type和object

    一.定义 1.object是所有新式类的父类 2.type是所有类的类    二.解析   下面通过代码来比较一下object和type的关系(__class__获取所属的类,__bases__获取父 ...

  4. jmeter jdbc各字段的含义

    JDBC采样器各选项的含义如下: 1.Variable Name 其中的Variable Name和上面JDBC Connection Configuration中的Variable Name相同,这 ...

  5. Android兼容性测试CTS --环境搭建、测试执行、结果分析

    为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体验,在每个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test S ...

  6. GloVe词分布式表示

    GloVe 模型介绍 下面的内容主要来自https://blog.csdn.net/u014665013/article/details/79642083 GloVe的推导 GloVe是基于共现信息来 ...

  7. 【转】Linux多命令顺序执行连接符(; || && |)

    当我们需要一次执行多个命令的时候,命令之间需要用连接符连接,不同的连接符有不同的效果.下面我们总结一下,加以区分. (1)  ;  分号,没有任何逻辑关系的连接符.当多个命令用分号连接时,各命令之间的 ...

  8. 异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法

    最近在做.net项目,因为本人以前做java较多,所以对.net不熟悉,在项目完成后部署到IIS服务器上出现诸多问题,以上其中之一,若有时间,在更新其他问题的解决办法! 异常详细信息: System. ...

  9. Use of @OneToMany or @ManyToMany targeting an unmapped class:hibernate映射错误

    hibernate映射异常:Use of @OneToMany or @ManyToMany targeting an unmapped class 新建了PO以后,要把PO所在的目录加入到Hiber ...

  10. 二进制<4>

    位运算简介及实用技巧(四):实战篇 下面分享的是我自己写的三个代码,里面有些题目也是我自己出的.这些代码都是在我的Pascal时代写的,恕不提供C语言了.代码写得并不好,我只是想告诉大家位运算在实战中 ...