​​三SSH

==ssh密钥对登录原理 :首先,客户端事先生成一对密钥,并将公钥保存在服务器上的授权文件中。接下来,客户端不用密码,而是用密钥对来验证身份。客户端用服务器的公钥来加密自己的公钥,然后把加密后的信息发送给服务器。服务器用自己的私钥解密这些信息,得到客户端的公钥,并检查是否与服务器存储的客户端公钥匹配。如果匹配,服务器会进一步确认这个公钥是客户端创建的,于是发送一个加密的质询信息给客户端,让客户端用它的私钥来解密。如果客户端能正确解密并用服务器的公钥重新加密后发回,服务器就能确认这个公钥属于客户端,从而验证了客户端的身份。==
 SFTP,SCP基于SSH协议
 
Linux基于Unix,提供多种类Unix系统选择。
AIX和HPUX是Unix系统,区别于Mac OS。
BSD  一种unix的操作系统

跳板机 提供临时的、免密登录至后台服务器的服务
堡垒机 在跳板机的基础上提供了身份验证、授权控制等功能,有效防止内部误操作,此外提供安全审计、追溯和事故分析的功能,以便于故障定位和责任认定
jumpserver 开源的堡垒机

撞  库:由于数据库之间的数据相似,就会出现撞库
伪设备文件:  
  /dev/zero    /dev/null   /dev/urandom 生成随机字符的文件

   生成随机密钥脚本

   ``` shell

    #!/bin/bash  
  
    read -p "请输入要生成密码的长度: " len  
    read -p "请输入要生成密码的个数: " num  
  
    for ((;;))  
    do
      #这个是生成随机字符,tr -dc就是来保留或者过滤字符串的过滤组分  
      pass=$(head -5 /dev/urandom | tr -dc a-zA-Z0-9\@\_\(\-\* | cut -c 1-$len)  
        xpass=$(echo $pass | awk '/[a-z]/&&/[A-Z]/&&/[0-9]/&&/[\@\_\(\-\*]/{printf $1"\n"}')   #输出指定规格的密码
        #对密码规格要求的判断
          if [ -n $xpass ]  
          then  
               passwd=(${passwd[*]} $xpass)  
          fi  
          if [ ${#passwd[*]} -eq $num ]  
          then  
               for i in ${passwd[*]}  
               do  
                    echo $i  
               done  
                       break  
            fi  
    done

```

``` shell
 #两种死循环
     for ((;;))
     while true
```

### SSH命令

SSH(Secure SHell)是一个命令行程序,用于安全地管理远程计算机。以下是几个常用的SSH命令:

- **远程登录**:

    ``` shell
    ssh 用户名@服务器IP地址
    ```
    
    例如:

    ``` shell
    ssh root@192.168.88.20
    ```
    
- **密钥对验证**:
    
    1. **生成密钥对**:

        ``` shell
       ssh-keygen -t rsa -b 2048
        ```
        
        `-t`指定加密算法,`-b`指定密钥长度。
    2. **将公钥上传至服务器**:

        ``` shell
          ssh-copy-id 用户名@服务器IP地址
        ```
        
        `-i`指定公钥文件的位置。
    3. **使用密钥对登录**:
        ``` shell
        ssh -p 端口号 用户名@服务器IP地址 
        ```
        
- **安全的远程文件复制**:

    ```
    scp 本地文件 用户名@服务器IP地址:远程目录
    ```
    
    如果SSH服务使用非默认端口,则需指定端口:
    ```
    scp -P 端口号 本地文件 用户名@服务器IP地址:远程目录
    ```
    

### SSH配置文件

SSH的主要配置文件位于`/etc/ssh/sshd_config`。**root和普通用户的.ssh目录 700 和authorized_keys 文件是600权限**以下是几个关键的配置项:

- **禁止密码登录**:不推荐设置

    
    ``` shell
    PasswordAuthentication no
    ```
    
    这一行取消注释后,将不允许使用密码进行登录。
    
- **禁止root远程登录**: 推荐在练习时使用 记得想创建一个用户 并用visudo设置权限

    ```
    PermitRootLogin no
    ```
    
    此配置项设置为`no`后,root账户将不能通过SSH远程登录。
    
- **修改默认监听端口**: 
    - ps :建议在生产环境中修改默认的SSH端口号。
        配置文件 /etc/ssh/sshd_config 在这个文件加注释的代码如果修改是会按默认配置生效

    ```
    Port 新端口号
    ```
    
    修改后的端口号需要在客户端连接时指定:

    ```
    ssh -p 新端口号 用户名@服务器IP地址
    ```
    
- **修改SSH监听IP**:使用场景:部署服务时,使用公网接口连接至公网交换机并通过路由器接入互联网,提供对外服务;而内网接口则仅限于用于服务器间的数据传输、备份等内部通信。在进行监听IP设置时,对于内外网分离场景下的服务器,应确保SSH等服务只监听内网接口,有效阻止了互联网用户直接访问内部系统。(内外网分离才使用)

    
    ```
    ListenAddress IP地址
    ```
    
    这样可以限定SSH服务只监听特定的IP地址。
实验 请提前准备2个网卡 并把ens33的网卡信息复制给ens36 假设地址是192.168.90.120
   ``` shell
    
 vim /etc/ssh/sshd_config 
     ListenAddress 192.168.90.120
     这样就只让ssh监听192.168.90.120主有这个IP才可以远程登录
```
#### TCP Wrappers
是一个用于控制访问的框架,它允许系统管理员定义哪些主机可以访问特定的服务。
#### TCP Wrappers的工作原理
![[Pasted image 20240911160842.png]]
黑名单:放行所有,拒绝个别   适合开放性服务器:apache、nginx、iis
白名单:拒绝所有,放行个别    适合 非开放性服务:ssh,telnet
白名单优先级比黑名单高![[Pasted image 20240911204806.png]]
libwrap.so.0 这是受防火墙过滤的函数文件
#### 配置文件编写规则

配置文件的每一行遵循以下格式:


```
service_list @ host : client_list
```

其中:

- `service_list`:是程序(服务)的列表,可以是多个,多个时用逗号隔开。
- `@ host`:设置允许或禁止他人从自己的哪个网口进入。如果不写,则代表全部。
- `client_list`:是访问者的地址,如果需要控制的用户较多,可以使用空格或逗号隔开。

### 示例配置

- **拒绝单个IP使用SSH远程连接**:

    ```
    hosts.deny: sshd:192.168.88.20
    ```
    
    `hosts.allow`文件为空。
    
- **拒绝某一网段使用SSH远程连接**:
    
    
    ```
    hosts.deny: sshd:192.168.88.
    ```
    
    `hosts.allow`文件为空。
    
- **仅允许某一IP使用SSH远程连接**:

    ```
    hosts.allow: sshd:192.168.88.20
    hosts.deny: sshd:ALL
    ```
    

### 判断方式

- **查看对应服务命令所在位置**:

    
    ```
    which sshd
    ```
    
- **查看指定命令执行时是否调用libwrap.so文件**:

    ```
    #ldd用来查看服务调用了哪些函数文件 即.so结尾的文件
    ldd /usr/sbin/sshd | grep libwrap.so
    ```
防火墙规则![[Pasted image 20240911215713.png]]

 ACL 访问控制列表 来限制特定用户的上网行为
## DHCP 
是一个工作在应用层的局域网网络协议,使用UDP不可靠传输协议工作,dhcp主要在工作中主要用于批量装机 端口 67       tftp 69端口  dhcp服务日志保存在 /var/log/messages中

![[Pasted image 20240918095558.png]]

服务器连接原理:==首先客户端通过广播DHCP Discover数据包来寻找可用的DHCP服务器;服务器接收到请求后,从其可用的IP地址池中选择一个地址,并通过DHCP Offer数据包将此地址及相关配置信息发送给客户端;客户端收到并决定接受后,会发送DHCP Request确认;最后,DHCP服务器通过发送DHCP ACK数据包正式确认分配,客户端据此设置其IP,网关等网络参数并开始通信。但是如果此时无DHCP服务器可用,DHCP客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。==
    如何处理客户端的续租和释放IP地址的情况?
        设备默认有最长租约时间和默认租约时间,续租周期通常是基于默认租约时间的50%,例如十分钟的有效租期对应于每五分钟进行一次续租尝试。如果续租失败,设备将会等待一段时间后再尝试续租,若连续多次续租失败,则将使用剩余的最大租约时间继续使用IP地址,直至到期或释放。

搭建DHCP服务器实验
 ``` shell
      yum -y install dhcp  安装DHCP服务
       cd /etc/dhcp/   dhcp服务的配置文件目录
       vi dhcpd.conf    dhcp规则文件  发现是空的提示到/usr/share/doc/dhcp下拿
       cp -a  /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  ./dhcpd.conf 直接把规则复制过来
       在vim dhcpd.conf
        写入的规则
        注意: 全局和局部的配置  至少要声明一个地址池和本机网段相同也就是这个   192.168.90.230 192.168.90.249地址池 
        subnet 192.168.90.0 netmask 255.255.255.0 {
          range 192.168.90.230 192.168.90.249;
          option domain-name-servers 223.5.5.5,8.8.8.8;
          option routers 192.168.90.2;
          option broadcast-address 192.168.90.255;
          default-lease-time 600;
          max-lease-time 7200;
        }
        systemctl enable --now dhcpd  启动DHCP服务
        netstat -anpu  | grep :67  查看服务是否正常启动
        tail -f /var/log/messages  查看DHCP服务租约日志的文件
 
 ```
规则文件解释
![[1726058296182.jpg]]  
注意事项 
     ![[Pasted image 20240911203801.png]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型:开启未来发展新引擎

在当今飞速发展的时代,数字化转型已成为企业、组织乃至整个社会发展的关键趋势。 信息技术的迅猛发展,如互联网、大数据、人工智能等,为数字化转型提供了强大支撑。市场竞争的加剧,也促使企业不断寻求提升竞争力的方法&#xff0c…

利用git将项目上传到github

采用git而不是在pycharm中共享的原因:可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库,添加文件,上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库,添加文件,上传代码

[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

LabVIEW提高开发效率技巧----利用第三方库和工具

LabVIEW开发不仅依赖于自身强大的图形化编程能力,还得益于其庞大的用户社区和丰富的第三方库。这些工具和库能够帮助开发者快速解决问题,提升开发效率,避免从头开始编写代码。 1. LabVIEW工具网络(NI Tools Network) …

DVWA-File Inclusion(文件包含)渗透测试

概念: 漏洞产生原因: 主要是由于开发人员没有对用户输入的文件路径进行严格的过滤和验证。例如,如果一个 Web 应用程序接受用户输入的文件路径,然后使用这个路径进行文件包含,而没有对用户输入进行任何检查&#xff0c…

传输层协议 --- UDP

序言 在之前的文章 Socket 编程 中,我们只是简单的知道了怎么利用 UDP协议 或者是 TCP协议 来发送我们的数据,并且我们还知道 UDP 是不可靠的,TCP 是可靠的。但这是为什么呢?底层的构造和策略决定他们的属性!这篇文章中…

数据结构编程实践20讲(Python版)—01数组

本文目录 01 数组 arrayS1 说明S2 举例S3 问题:二维网格中的最小路径求解思路Python3程序 S4 问题:图像左右变换求解思路Python3程序 S5 问题:青蛙过河求解思路Python3程序 写在前面 数据结构是计算机科学中的一个重要概念,用于组…

HttpSession使用方法及原理

HttpSession使用方法及原理 一、HttpSession使用流程说明二、登录概述具体 三、访问过程概述具体 一、HttpSession使用流程说明 1.用户发送登录请求到服务器。 2.服务器处理登录请求,调用userService.login(loginUser)。 3.如果登录成功,服务器调用requ…

Linux云计算 |【第四阶段】NOSQL-DAY2

主要内容: Redis集群概述、部署Redis集群(配置manage管理集群主机、创建集群、访问集群、添加节点、移除节点) 一、Redis集群概述 1、集群概述 所谓集群,就是通过添加服务器的数量,提供相同的服务,从而让…

【echarts】报错series.render is required.

总结:就是echarts无法保存renderItem函数到json里,因为renderItem是个封装方法,因此需要初始化加载时重新插入renderItem即可 1.描述:控制台报错series.render is required. 原数据json如下: {type: "bar"…

工作安排 - 华为OD统一考试(E卷)

2024华为OD机试(C卷+D卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 小明每周上班都会拿到自己的工作清单,工作清单内包含n项工作,每项工作都有对应的耗时时长(单位h)和报酬,工作的总报酬为所有已完成工作的报酬之和。那么请你帮小明安排一下工作,保证小明在指定…

科研绘图系列:R语言树结构聚类热图(cluster heatmap)

文章目录 介绍加载R包导入数据数据预处理画图修改图形导出数据系统信息介绍 热图结合树结构展示聚类结果通常用于展示数据集中的模式和关系,这种图形被称为聚类热图或层次聚类热图。在这种图中,热图部分显示了数据矩阵的颜色编码值,而树结构(通常称为树状图或聚类树)则显…

AIGAME背后的强大背景与AI币价值的崛起

AIGAME平台背后汇集了强大的资本和技术支持,凭借蒙特加密产业基金的战略投资和汇旺集团的多元化Web3基础设施建设,AIGAME在全球范围内迅速崛起。平台所使用的Sleepless AI技术,结合区块链与AI的深度融合,赋能AI币,使其…

虚拟社交的新时代:探索Facebook的元宇宙愿景

随着技术的不断进步,社交媒体的形态也在悄然变化。Facebook(现名Meta)正站在这一变革的前沿,积极探索元宇宙的愿景。元宇宙不仅是虚拟现实(VR)和增强现实(AR)的结合,更是…

遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决

遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决 第一部分:windbg调试记录。 0: kd> g Breakpoint 10 hit winmine!DoButton1Up: 001b:0100390e a130510001 mov eax,dword ptr [winmine!xCur (01005130)] 0: kd> kc # 00 winmine…

【RabbitMQ 项目】服务端:服务器模块

文章目录 一.编写思路二.代码实践三.服务端模块关系总结 一.编写思路 成员变量: muduo 库中的 TCP 服务器EventLoop 对象:用于主线程循环监控连接事件协议处理句柄分发器:用于初始化协议处理器,便于把不同请求派发给不同的业务处理…

Golang | Leetcode Golang题解之第433题最小基因变化

题目: 题解: func diffOne(s, t string) (diff bool) {for i : range s {if s[i] ! t[i] {if diff {return false}diff true}}return }func minMutation(start, end string, bank []string) int {if start end {return 0}m : len(bank)adj : make([][…

OpenHarmony标准系统mipi摄像头适配

OpenHarmony标准系统mipi摄像头适配 本文档以rk3568为例,讲述如何在OpenHarmony 标准系统rk设备上适配mipi摄像头。 开发环境 OpenHarmony标准系统4.1rrk3568设备摄像头ov5648,ov8858 文档约定:4.1r_3568为OpenHarmony标准系统源码根目录 1.适配准备:得…

树莓派pico上手

0 介绍 不同于作为单板计算机的树莓派5,树莓派 pico 是一款低成本、高性能的微控制器板,具有灵活的数字接口。主要功能包括: 英国树莓派公司设计的 RP2040 微控制器芯片双核 Arm Cortex M0 处理器,弹性的时钟频率高达 133 MHz26…

Spring AOP的应用

目录 1、maven坐标配置与xml头配置 2、代理方式的选择与配置 3、AOP的三种配置方式 3.1、XML模式 3.1.1 创建目标类和方法 3.1.2 创建切面 3.1.3 切面xml配置与表达式说明 3.1.4 单测 3.2 纯注解模式 3.2.1 开启注解相关配置 3.2.2 创建目标类和方法 3.2.3 创建切面…