​​三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,一经查实,立即删除!

相关文章

前端面试题(八)

39. 现代前端框架 当前流行的前端框架有哪些? React:由 Facebook 开发的一个用于构建用户界面的 JavaScript 库,采用组件化开发,支持虚拟 DOM 和单向数据流。 主要特性: 组件复用:将 UI 分割成独立的、可复…

html,js,react三种方法编写helloworld理解virtual dom

学习任何一个新语言&#xff0c;好像都从helloworld开始。&#xff1a;&#xff09;。 html helloworld 静态hello world <!DOCTYPE html> <html> <head><title>Hello World</title> </head> <body><p>Hello World</p&g…

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

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

OpenCV图像文件读写(6)将图像数据写入文件的函数imwrite()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像保存到指定的文件中。 函数 imwrite 将图像保存到指定的文件中。图像格式是根据文件名扩展名选择的&#xff08;参见 cv::imread 获取扩展…

利用git将项目上传到github

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

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

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

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

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

从准备面试八股文,感悟到技术的本质

工作前几年听说过&#xff0c;大学最重要的几门课其实是数据结构和算法、操作系统、计算机组成原理、计算机网络。 初听时不以为然&#xff0c;感觉没什么用。 近期准备面试八股文得到了一些感悟。这句话随着工作年限和对程序的理解越来越深入&#xff0c;含金量越来越高。 最…

FFmpeg源码:avio_skip函数分析

AVIOContext结构体和其相关的函数分析&#xff1a; FFmpeg源码&#xff1a;avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码&#xff1a;read_packet_wrapper、fill_buffer函数分析 FFmpeg源码&#xff1a;avio_read函数分析 FFmpeg源码&#xff…

c# Expression<Func<T, T>>转成实体

将 Expression<Func<T, T>>转成实体T public class MyEntity {public int Age { get; set; }public string Name { get; set; } } public static class ExpressionExtension{#region 表达式类型字典/// <summary>/// 表达式类型字典/// </summary>priv…

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

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

传输层协议 --- UDP

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

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

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

使用Plotly绘制交互式图表:从入门到精通

使用Plotly绘制交互式图表:从入门到精通 在数据科学和数据可视化领域,交互式图表能够提供更丰富的用户体验和更深入的数据洞察。Plotly 是一个强大的 Python 库,它不仅支持静态图表,还能创建高度交互的图表。本文将详细介绍如何使用 Plotly 实现一个函数来绘制交互式图表,…

【Gitee自动化测试2】Git,Github,Gitlab,Gitee

一. 服务器 与 客户端 是提供服务的计算机&#xff0c;存储项目代码和版本信息&#xff0c;处理客户端请求并返回响应。并通过网络向其他计算机&#xff08;即客户端&#xff09;提供这些服务。服务器可以是物理设备&#xff0c;也可以是虚拟机。 二. 版本控制 目的&#xf…

HttpSession使用方法及原理

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

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

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

【echarts】报错series.render is required.

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

‌[AI问答] Auto-sklearn‌ 与 scikit-learn 区别

‌Auto-sklearn与scikit-learn的主要区别在于Auto-sklearn是一个自动化机器学习库&#xff0c;而scikit-learn是一个用于数据挖掘和数据分析的Python工具包。‌ Auto-sklearn是一个自动化的机器学习工具&#xff0c;它能够自动搜索最佳的学习算法并优化其超参数&#xff0c;通…

SQLAlchemy 查询,多条件的查询需求,根据传入条件的实际情况,决定将哪些条件作为filter条件进行查询

多个条件的查询&#xff0c;使用 SQLAlchemy 的查询构建器来动态地构建查询&#xff0c;根据传入的条件参数&#xff08;condition1, condition2, condition3 等&#xff09;来决定是否将这些条件添加到查询中 class Order(Base): __tablename__ orders id Column(Integer,…