综合架构远程服务

01.知识概述部分

1)远程服务概念介绍
2)远程服务连接原理
3)远程服务连接方式
a 基于密码方式远程连接
b 基于秘钥方式远程连接(脚本)
4)远程服务配置文件
5)远程入侵方法策略
dos ddos

02.知识回顾说明

全网备份数据项目应有的阶段
1)项目需求分析
实现网站数据全网备份 每天0点进行数据备份
a 本地数据进行打包保存备份
b 将本地数据保存到备份服务
c 本地数据保留7天以内
d 备份服务器数据保留180天(每周一数据都要保留)
e 所有数据需要进行日期标记,不同服务器数据进行分类存储
f 所有数据备份完毕进行完整性验证,并发邮件进行告知

2)项目实施规划

3)项目实施阶段
解决每一个需求
将需求信息整合
4)项目验收测试
5)项目梳理汇报

客户端
1.创建目录 /backup
2.tar zcf /backup
3.tar zcf /backup(路径) 打包的名字
4.
把上面的步骤放在一个脚本文件里面
将所有的完成的任务进行整合,放到脚本里
sh 执行脚本

服务端
脚本差不多

mailx 发邮件的工具 vi /etc/mail.rc 最后一行 添加信息
crontab -e 定时任务 0 0 * * * /bin/bash 脚本文件

03.远程服务概念介绍

在这里插入图片描述

两个重要作用:

· 远程服务可以实现远程连接管理主机
· 远程服务可以实现远程下载传输数据

https://www.cnblogs.com/guolei2570/p/8810536.html进程 线程 协程介绍

一个服务运行起来就会有相应的进程,有了进程就可以接受用户的访问,如果进程没有运行起来,就意味着这个服务是不能被访问的。
有了进程后用户就可以访问这些服务,建立网络连接,便于通讯。
当产生多个数据请求,一个进程处理不过来,就可以有多个线程协助解决数据请求,进程同时处理不了的数据就交给线程来处理数据请求,
在这里插入图片描述
比如sersync软件监控一个目录,进程能处理下来,当监控多个目录时,就需要开启多个线程
在这里插入图片描述

利用SSH tenlnet服务实现远程连接主机

SSH :互网络连接使用,安全

加密传输数据方式(安全性更高,复杂性较高)经过互联网远程连接使用 访问端口22
默认支持root用户远程连接
通过抓包可以发现ssh都是密文信息 ↓
在这里插入图片描述
查看TCP追踪流,蓝色客户端,红色服务端,通讯过程都是在加密和解密

在这里插入图片描述

linux下运行telnet命令出现command not find解决办法

原因是没有安装telnet客户端和服务(缺一不可)

yum list telnet*   查看telnet相关的安装包
yum install telnet-server 安装telnet服务
yum install telnet.* 安装telnet客户端
telnet:局域网或网络设备使用

明文传输数据方式(安全性更低,复杂性较低)下载即用,经过局域网连接使用,端口23,默认禁止root用户远程连接

蓝色的是自己输入的,红色是服务端回复的,密码明文显示,包括做过的操作都可以截取到

在这里插入图片描述

04.远程服务连接原理

在这里插入图片描述

客户端:发送建立连接通讯请求
服务端:回复秘钥确认信息
客户端:进行秘钥信息请确认 yes
服务端:将公钥信息进行发送传递
客户端:接收公钥进行保存,并发送确认信息 (~/.ssh/known_hosts)
服务端:发送密码验证信息(加密处理)
客户端:输入密码信息 (加密处理)
数据连接建立完毕
后续所有传输的数据都是加密处理

通过ssh连接10.0.07能看到↓没有加用户名称xxx@10.0.0.7时默认以当前用户身份连接
在这里插入图片描述
RCDSA key 是秘钥类型,
公钥是保存在服务端 /etc/ssh/ ssh_host_ecdsa_key是私钥↓带pub的是公钥
在这里插入图片描述

在这里插入图片描述
当客户端请求建立连接时,服务端会把PRO/Q=这段结尾的信息就被传输到客户端家目录中,生成一个~/.ssh/known_hosts文件
在这里插入图片描述
完成连接建立以后,客户端发送的数据信息加密后就会被服务端私钥解密进行查看处理,服务端的数据反向加密后再发还客户端,客户端用已知的锁也可以加密查看,这是双向的加密与解密,保证通讯过程中是安全可靠的,这就是整个通讯过程。

05.远程上服务连接方式

在这里插入图片描述

a 基于密码方式远程连接
b 基于秘钥方式远程连接(脚本)

基于秘钥连接的主机可以称为管理端,另外的主机称为受控端,第一步管理端会创建一个新的秘钥对出来(公钥/私钥),之前的秘钥只要用于加密数据信息,新创建的秘钥主要用来身份验证,第一步有管理端发送公钥信息到受控端,受控端回复确认收到,等下次管理端再与受控端连接时就可以不基于密码连接的方式了,管理端发送建立连接请求,这时候受控端回复询问我有一个公钥,你能不能识别,这个过程叫公钥质询过程,能打开你就我的管理者。
管理端再将质询的结果发送给受控端,告诉它你的锁我已经打开了,这个过程叫公钥质询响应
此时管理端就可以对受控端进行管理了,所以在这个过程公钥跟私钥是很重要的,最关键是私钥是最重要的,这个过程比密码更安全,因为私钥是保存在受控端主机里的。

实现方式:

linux系统 → linux系统

先将存储服务器作为管理主机,web01作为受控端

第一个里程:管理端建立密钥对

(-t是指定秘钥类型,一般有rsa dsa两种类型)

[root@web01 ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
(是否把生成的秘钥信息保存在(/root/.ssh/生成私钥id_rsa),确认回车,或者后面写路径
Enter passphrase (empty for no passphrase): 
(是否为私钥加密码),不需要直接回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:zZi14ckEC/BPAaae7tdoSSZSODdv3L7MdrES8W85FTc root@web01
The key's randomart image is:
+---[RSA 2048]----+
|    ..+.o        |
|     + . +       |
|   .. . o +      |
|  o.+. o.X +  .E.|
|   +o+ .SoB    o.|
|  ... * o o   .  |
|   ..= = . + o   |
|   .  =o= o =    |
|    .o .++ . .   |
+----[SHA256]-----+

提示已经生成了私钥及公钥,查看↓

[root@web01 ssh]# ll /root/.ssh
total 16
-rw------- 1 root root 1176 Jan 16 16:27 authorized_keys
-rw------- 1 root root 1675 Jan 17 11:52 id_rsa
-rw-r--r-- 1 root root  392 Jan 17 11:52 id_rsa.pub
-rw-r--r-- 1 root root  170 Jan 16 16:23 known_hosts
第二个历程:管理端传输公钥信息

分发公钥的命令:↓

ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.7

[root@nfs01 ~ 12:06:31]# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.7
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.7's password: 
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '10.0.0.7'"
and check to make sure that only the key(s) you wanted were added.

此时查看受控端:↓

[root@web01 .ssh]# ll
total 16
-rw------- 1 root root  392 Jan 17 12:07 authorized_keys

手动传输私钥:↓
管理端
在这里插入图片描述
受控端:为了安全需要修改权限
在这里插入图片描述
为了能ssh服务识别需要编辑配置文件:
[root@web01 ~]# vim /etc/ssh/ssh_config
进入后:/auth\c 找47行
在这里插入图片描述
之后将私钥改名:
在这里插入图片描述
这就是整个基于秘钥的手动连接过程,但很麻烦,
删除秘钥↓

[root@web01 .ssh]# rm authorized_keys 
rm: remove regular file ‘authorized_keys’? yes
第三个历程:进行远程连接测试
ssh 10.0.0.7

也可以不需要连接,后面加上命令可以将命令的结果传输回来

ssh 10.0.0.7 ip a s eth0

[root@nfs01 ~ 12:07:12]# ssh 10.0.0.7 ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:26:1c:fe brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::df60:b54f:bc89:eb/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::428e:bcdd:72a7:5cc2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

如何批量基于密钥方式管理多台主机:

使用批量管理主机 m01 10.0.0.61 管理 41 31 7 8

批量分发公钥脚本:解决问题: 如何实现免交互 看16点45的视频

1) 需要连接时输入yes信息

ssh 172.16.1.31 -o StrictHostKeyChecking=no

2) 需要连接时输入密码信息

yum install -y sshpass
sshpass - noninteractive ssh password provider
           以免交互方式提供SSH连接密码信息
sshpass -p654321 ssh 172.16.1.31

3) 需要连接时输入端口信息 65535

 ssh 172.16.1.7 -p65535
批量分发公钥脚本:
# cat distribute_public_key.sh 
#!/bin/bash
for ip in $(cat /server/scripts/ip_list.txt)
do
  sshpass -p654321 ssh-copy-id -i /root/.ssh/id_rsa.pub $ip -o StrictHostKeyChecking=no &>/dev/null
  if [ $? -eq 0 ]
  then
     echo  "to $ip distribute_key "
     echo  "public key distribute ok"
     echo  ""
  else
     echo  "to $ip distribute_key"
     echo  "public key distribute no"
     echo  ""
  fi
done
批量分发验证脚本
#!/bin/bash
for ip in $(cat /server/scripts/ip_list.txt)
do
    ssh $ip $1
done

在批量分发公钥信息时:

  1. 如果受控端主机 密码信息不一致
  2. 如果受控端主机 端口信息不一致
  3. 如果受控端主机 用户信息不一致()
模拟企业环境:

完成后连接方式: ssh 172.16.1.7 -p端口号

管理主机操作 ↓

yum install -y sshpass
rm -rf /root/.ssh/*

管理端建立密钥对 ↓
(-t是指定秘钥类型,一般有rsa dsa两种类型)

[root@web01 ssh]# ssh-keygen -t rsa

然后配置虚拟机 ↓

m01    root  654321  ssh服务端口22
web01  root  123123  ssh服务端口65531
web02  root  321321  ssh服务端口65532
nfs01  root  123456  ssh服务端口65533
backup root  654321  ssh服务端口65534	  

在/etc/ssh/sshd_config修改端口信息

[root@nfs01 ~ 12:48:42]# vim /etc/ssh/sshd_config
[root@nfs01 ~ 12:53:54]# systemctl restart sshd

编写主机信息文件

vim /server/scripts/ip_list.txt
172.16.1.7:123123:65531
172.16.1.8:321321:65532
172.16.1.31:123456:65533
172.16.1.41:654321:65534
编写批量分发公钥文件
#!/bin/bash
for host in $(cat /server/scripts/ip_list.txt)
do
  host_ip=$(echo $host|awk -F ":" '{print $1}')
  host_pass=$(echo $host|awk -F ":" '{print $2}')
  host_port=$(echo $host|awk -F ":" '{print $3}')
  sshpass -p$host_pass ssh-copy-id -i /root/.ssh/id_rsa.pub $host_ip -o StrictHostKeyChecking=no -p$host_port  &>/dev/null
  if [ $? -eq 0 ]
  then
     echo  "to $host_ip distribute_key "
     echo  "public key distribute ok"
     echo  ""
  else
     echo  "to $host_ip distribute_key"
     echo  "public key distribute no"
     echo  ""
  fi
done
windows系统(xshell) --> linux系统
第一个历程: 管理端建立密钥对

xshell工具 → 新建密钥向导,还是选择RSC,选择秘钥长度1024连接稍微快一点

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
选择10.0.0.7主机连接:↓

在这里插入图片描述
在这里插入图片描述

第二个历程: 将公钥信息进行编辑

把保存在windows的id_rsa_1024.pub 里信息编辑到- linux主机authorized_keys

下一步把密钥放到受控端web01:↓
如果没有authorized_keys,就将id_rsa_1024.pub上传改个名字改下权限600。
如果已经有了公钥了,那就将受控端公钥文件打开,创建新的公钥信息,将之前windows保存的公钥信息打开复制粘贴到受控端web01公钥文件:↓

[root@web01 .ssh]# vim authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCY60wCejCYWkJSQ/UyBxYjjmLIztKXSuTc5JaRyBgLz11pDiSdNpD9m+Uyu8tu6ene122t954EDBtJwvj9jxJD5K29kqRXif3wRaEas6cB8dOFpu70slydgUZqh0FOXMapzU8LFHnqVe+vm7fazhPnTwu/xA6HNrfEzG+JRkfVTQkt7WDcWc4A9dQo73old6Vv/GdBYWk167+L0OMtmp97GiUBz8Ilz+3/jcLnM+1fWFnLPbyjO+eu7g+fh+WQNTVUYmhu0vd0KOCcTpYLvhMSvMq7mXdVcmJB0xstQip085BBUOsMy3vDamU05GmPqkTZbfdE2Rk2/J86vuIaSnAt root@nfs01

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAxsyaMlMfZ7oLlzpslNmKqy3f0+wkeMajjFFb+2BqjT5z7SXQIE+KhaXH/pavdfbaECYM8C8C2/ppiUnjPROaCsJ6I89t5NsvUK8BDVY6oWMJSLpsH5n9fe0t1yyiWCBCPRmSzs/G4gY0iFUN5NwtsIF07k8ooh/xzSUfRONOiQU=
第三个历程: 修改连接会话设置

以pubic key方式连接 — 加载密钥信息
在这里插入图片描述
此时xshell重新连接已经连接上了

不登陆主机直接做操作并返回来

[root@manager ~ 17:08:23]# ssh -p65531 10.0.0.7 hostname
web01

06. 课程总结梳理:

  1. 远程服务概念介绍:
    远程服务作用: 2点
    远程服务应用: ssh telnet

  2. 远程服务连接原理: 利用公钥和私钥

  3. 远程服务连接方式

a 基于密码方式连接
b 基于密钥方式连接 (配置部署过程 — 批量分发公钥脚本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值