1.优化ssh命令

  1. sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\n
  2. UseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config
  3.  
  4. 保障服务器安全:
  5. a.用密钥登录,不用密码;
  6. b.尽量不配外网ip;
  7. c.跳板机iptables封闭ssh,指定源IP限制;
  8. d.开启ssh只监听内网ip;
  9. e.拨号连接VPN,由vpn去连接跳板机;
  10.  
  11. 通过ssh连接其他linux语法:
  12. ssh -p端口 用户@IP
  13. 通过scp拷贝文件、目录的语法:
  14. scp -P端口号 文件名 用户名@IP:目标地址
  15. 推送:scp -P端口号 -rp 目录名 用户名@IP:目标地址
  16. 拉取到本地:scp -P52113 -rp oldboy@IP:/tmp/etc /data

2.非交互式创建密钥

第一步--所有机器创建用户及密码

  1. useradd oldgirl
  2. echo 123456|passwd --stdin oldgirl
  3. su - oldgirl

第二步--主机名为m01上创建密钥对(两种方法)

  1. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1
  2. echo -e "\n" | ssh-keygen -t dsa -N "" > /dev/null 2>&1
  3. # 如果是默认的22端口,则:
  4. ssh-copy-id -i ~/.ssh/id_dsa.pub oldgirl@172.16.1.41
  5. # 特殊端口分发:
  6. ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.41"
  7. # 目标主机的.ssh/authorized_keys发生变化,
  8. # 为什么是这个文件?(配置文件做了设置)
  9. grep authorized_keys /etc/ssh/sshd_config
  10. #AuthorizedKeysFile .ssh/authorized_keys

以普通用户的身份进行操作,在m01上将/etc/hosts先拷到oldgirl的家目录下,

然后想把hosts拷到目标主机的/etc/hosts,发现权限拒绝,该如何解决这个问题呢?

  1. a.制作密钥对时以root身份,但这样会导致服务器不安全,故不用;
  2.  
  3. b.sudo提权,实现没有权限的用户,去操作主机
  4. # 配置/etc/sudoers(在目标主机)
  5. echo "oldgirl ALL=(ALL) NOPASSWD: /usr/bin/rsync" >> /etc/sudoers
  6. visudo -c # 检查语法
  7. scp -P52113 hosts oldgirl@172.16.1.31:~
  8. ssh oldgirl@172.16.1.31 -t rsync ~/hosts /etc/hosts
  9. # -t参数表示开启终端,ssh指定端口时,用大写或者小写的p都可以
  10. # 出现这种结果表明执行成功--Connection to 172.16.1.31 closed.
  11. # 如果数据量比较大,想用rsync去增量拷贝,可以用隧道模式
  12. rsync -avz hosts -e 'ssh -p 22' oldgirl@172.16.1.31:~
  13.  
  14. c.以suid的方式(仅当做一种方法即可)
  15. # 将目标主机上的命令增加s权限
  16. chmod u+s `which rsync
  17. # 在m01上'曲线救国'
  18. scp -P52113 hosts oldgirl@172.16.1.31:~
  19. ssh -P52113 oldgirl@172.16.1.31 rsync ~/hosts /etc/hosts

3.expect实现自动分发密钥

  1. # 在m01(0.61)、nfs01(0.31)、web01(0.8)上先创建用户
  2. useradd oldgirl888
  3. echo 123456|passwd --stdin oldgirl888
  4. # 在m01上安装expect并生成oldgirl888的密钥对
  5. yum -y install expect
  6. su - oldgirl888
  7. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1

分发密钥的exp脚本

  1. cat send_sshkey.exp
  2. #!/usr/bin/expect
  3. if { $argc != 2 } {
  4. send_user "usage: expect send_sshkey.exp file host\n"
  5. exit
  6. }
  7. # define var 定义变量
  8. set file [lindex $argv 0]
  9. set host [lindex $argv 1]
  10. set password "123456"
  11.  
  12. #spawn scp /etc/hosts root@10.0.0.41:/etc/hosts
  13. #spawn scp -P52113 $file oldboy@host:$dir
  14. spawn ssh-copy-id -i $file oldgirl888@$host
  15. expect {
  16. "yes/no" {send "yes\r";exp_continue}
  17. "*password" {send "$password\r"}
  18. }
  19. expect eof
  20.  
  21. exit -onexit {
  22. send_user "good bye...\n"
  23. }
  24. #example
  25. #expect send_sshkey.exp ~/host 10.0.0.31:~
  26.  
  27. # 分发并检验
  28. expect send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.31
  29. ssh oldgirl888@172.16.1.31 /sbin/ifconfig eth0

4.在脚本中调用expect脚本

  1. cat send_sshkey.sh
  2. #!/bin/bash
  3. . /etc/init.d/functions
  4. for ip in 8 31 41
  5. do
  6. expect /home/oldgirl888/send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$ip >/dev/null 2>&1
  7. if [ $? -eq 0 ];then
  8. action "$ip" /bin/true
  9. else
  10. action "$ip" /bin/false
  11. fi
  12. done

5.分发密钥步骤总结(有个描述该总结的脚本,在视频中):

  1. 1.所有服务器上禁止root登录,得有一个普通用户,如:oldgirl888,密码统一为123456;
  2. 2.sudo提权,echo "oldgirl888 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
  3. 3.m01上切换到oldgirl888,执行脚本,脚本的内容是:
  4. 创建oldgirl888密钥对,给多台服务器分发此密钥,然后分发执行脚本,最后执行此脚本.

6.安装saltstack(事先安装了epel源)

  1. yum -y install salt-master
  2. yum -y install salt-minion
  3. chkconfig salt-master on
  4. chkconfig salt-minion on

7.生产环境常见的HTTP状态码列表

  1. 200 - OK,服务器成功返回网页;
  2. 301 - Moved Permanently(永久跳转),请求的网页已永久跳转到新位置;
  3. 客户端错误:
  4. 403 - Forbidden(禁止访问),服务器拒绝请求
  5. 404 - Not Found,服务器找不到请求的页面
  6. 服务器端错误:
  7. 500 - Internal Server Error(内部服务器错误);
  8. 502 - Bad Gateway(坏的网关),
  9. 一般是网关服务器请求后端服务时,后端服务没有按照http协议正确返回结果;
  10. 503 - Service Unavailable(服务当前不可用),可能因为超载或停机维护;
  11. 504 - Gateway Timeout(网关超时),
  12. 一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务.

8.伪静态网页小结

  1. a.利用rewrite技术将动态网页伪装成静态页面(URL地址改写);
  2. b.便于搜索引擎收录提升用户访问量以及用户体验;
  3. c.性能没有提升,并且转换成伪静态会消耗资源,因此性能不升反降;
  4. d.尽可能将动态网页转换成真正的静态页面;
  5. e.并发不是很大或动态更新过于频繁时,用rewrite实现伪静态也不错;
  6. f.伪静态网页的实现,一般是由运营产品提出需求,开发和运维共同实现的.

9.网站流量--度量术语

  1. a.IP
  2. 通过独立IP度量网站访问量,和实际的访问情况不是很匹配,国内的企业、学校多数是用
  3. NAT上网,一个独立IP背后可能有数十上百个客户端,独立IP虽然不是很准确,但也是运维
  4. 人员比较关心的一个衡量网站的指标.
  5. b.PV
  6. 页面点击量,不管客户端或IP是不是相同,页面被访问一次就算一个PV
  7. c.UV(Unique Visitor)
  8. 独立访客,同一台客户端访问网站被认为是一个访客,一天内同一个客户端访问同一个网站
  9. 只计算一次UV,一般以Cookie为统计依据.
  10. d.知名网站访问量信息参考
  11. 网站 独立IP/日 PV数/日 网站并发数 服务器数
  12. www.51cto.com 58 130 1 几十台
  13. www.58.com 140 2300 1万-3 几百台
  14. www.taobao.com 4600 5亿 几十万-百万 万台
  15.  
  16. 并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响,
  17. 并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量.
  18. 比如有10万用户同时在线,本地缓存和CDN就挡住了90%,剩下的10%才会和服务器产生交互.
  19.  
  20. 网站并发量计算(仅当参考):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. 8.Yii2.0框架控制器接收get.post数据

    8.Yii2.0框架控制器接收get.post数据 一.get传参 <?php /** * Created by Haima. * Author:Haima * QQ:228654416 * D ...

  2. Jack Straws POJ - 1127 (几何计算)

    Jack Straws Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5428   Accepted: 2461 Descr ...

  3. 查看 EGLIBC 版本

    $ ldd --versionldd (Debian EGLIBC 2.13-38+deb7u1) 2.13

  4. python基础学习笔记——字符串方法

    索引和切片: 索引:取出数组s中第3个元素:x=s[2] 切片:用极少的代码将数组元素按需处理的一种方法.切片最少有1个参数,最多有3个参数,演示如下: 我们假设下面所用的数组声明为array=[2, ...

  5. apache php 多站点配置 重新整理

    需要下载的东东:apache_2.0.59-win32-x86-no_ssl.msi  (服务器软件,用来编译PHP的) php-5.1.5-Win32.zip  (PHP的主文件) 第一步:1.安装 ...

  6. oracle整体结构-内存结构、物理结构、逻辑结构、进程

    Oracle的体系结构大体上分为两部分:Instance(实例)和Database(数据库). Instance(实例) :在Oracle Instance中主要包含了SGA以及一些进程(例如:PMO ...

  7. concurrent.futures模块(进程池&线程池)

    1.线程池的概念 由于python中的GIL导致每个进程一次只能运行一个线程,在I/O密集型的操作中可以开启多线程,但是在使用多线程处理任务时候,不是线程越多越好,因为在线程切换的时候,需要切换上下文 ...

  8. TOJ4537: n阶行列式

    4537: n阶行列式  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 28       ...

  9. JSON之解析

    JSON之解析通过TouchJSON\SBJSON\JSONKit\NSJSONSerialization JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 ...

  10. CSS3box-shadow属性的使用

    每次使用box-shadow,都要查阅资料才能实现对应的效果,现在总结一下,方便以后查看. 一.语法: E {box-shadow: inset x-offset y-offset blur-radi ...