DNS 反向解析导致 ssh 连接缓慢

文章目录

    • @[toc]
    • 检查 sshd 配置文件
    • 查看 sshd 配置文件的默认值
      • 方法一
      • 方法二
    • 修改 sshd 配置文件
    • 重启 sshd 应用配置文件
    • 题外扩展
      • `~/.ssh/authorized_keys` 中的 `from` 条件
      • `sshd_config` 中的 `Match Host` 指令
      • `from` 和 `Match Host` 的区别和联系

检查 sshd 配置文件

一般,默认的 UseDNS 参数都是注释的

grep UseDNS /etc/ssh/sshd_config

centos 一般默认是这样的,openeuler 22.03 (LTS-SP4) 默认是 no

#UseDNS yes

查看 sshd 配置文件的默认值

方法一

man sshd_config | grep -A 5 UseDNS
  • 指定 sshd(8)是否应查找远程主机名,并检查远程 IP 地址的解析主机名是否映射回相同的 IP 地址
  • 默认值为 “yes”
  • 如果该选项设置为 no,那么在 ~/.ssh/authorized_keys 文件中的 from 选项和 sshd_config 文件中的 Match Host 指令中只能使用地址,不能使用主机名。
     UseDNS  Specifies whether sshd(8) should look up the remote host name, and to check that the resolved host name for the remote IP address maps back to the very same IP address.The default is “yes”.If this option is set to no then only addresses and not host names may be used in ~/.ssh/authorized_keys from and sshd_config Match Host directives.

方法二

这个方法是验证 sshd 当前的配置,如果修改了 /etc/ssh/sshd_config 配置文件,下面的命令也会看到配置的更新

sshd -T | grep usedns

centos 默认是 yes

usedns yes

修改 sshd 配置文件

/etc/ssh/sshd_config 文件内加入下面的内容,确保没有其他的 UseDNS 是非注释状态

UseDNS no

重启 sshd 应用配置文件

systemctl restart sshd

通过上面的 sshd -T | grep usedns 可以看到 usedns 已经从 yes 变成了 no,再次 ssh 就快很多了

题外扩展

以下内容取自 chatgpt,本人还未验证过

  • 上面的配置文件提到过,如果 UseDNS 选项设置为 no,那么在 ~/.ssh/authorized_keys 文件中的 from 选项和 sshd_config 文件中的 Match Host 指令中只能使用地址,不能使用主机名
  • 这里扩展一下这两个的场景

~/.ssh/authorized_keys 中的 from 条件

from 条件用于限制某个公钥登录的客户端来源(IP 地址或主机名)。你可以在 ~/.ssh/authorized_keys 文件中,为每个公钥添加一个 from 条件,指定只有从特定的 IP 地址或主机才能使用该公钥登录

  • 语法格式
from="host1,host2" ssh-rsa AAAAB3... user@host
  • 示例场景

    • 限制访问到特定 IP 地址:你希望只有从公司内部网或特定的 IP 地址才能通过公钥登录。通过 from 限制,可以确保即使公钥泄露,也只能从指定的 IP 地址登录

      • from="192.168.1.0/24" ssh-rsa AAAAB3... user@host
        
      • 这条配置表示只有从 192.168.1.0/24 网段内的主机才能使用这个公钥登录

    • 限制特定主机名:如果 UseDNS yes,也可以使用主机名进行限制

      • from="trustedhost.example.com" ssh-rsa AAAAB3... user@host
        
      • 这里指定只有主机 trustedhost.example.com 能使用该公钥登录

  • 注意事项

    • UseDNS 设置为 no 时,from 条件只能使用 IP 地址,不能使用主机名
    • 如果 DNS 解析不可靠或延迟很高,建议使用 IP 地址来避免问题

sshd_config 中的 Match Host 指令

Match 指令可以根据多个条件(如客户端的主机名、IP 地址、用户等)对 SSH 配置进行精细控制。Match Host 是其中的一种条件,允许你根据客户端的主机名或 IP 地址为其应用特定的 SSH 设置

  • 语法格式
Match Host pattern<SSH 选项>
  • 示例场景

    • 为特定主机应用不同的设置:你可以根据不同的主机名或 IP 地址,对 SSH 配置进行细粒度的控制。例如,要求来自某个主机的连接只能使用密码认证,而来自其他主机的连接可以使用公钥认证

      • Match Host 192.168.1.100PasswordAuthentication yes
        Match Host *PasswordAuthentication no
        
      • 在这个例子中,IP 为 192.168.1.100 的主机可以使用密码登录,而其他所有主机则必须使用公钥认证

    • 限制特定主机只能通过特定用户登录:你可以限制来自特定 IP 或主机名的登录只能使用特定用户

      • Match Host 192.168.1.100AllowUsers specialuser
        
      • 这样,来自 192.168.1.100 的主机只能通过 specialuser 登录

  • 注意事项

    • from 一样,如果 UseDNS 设置为 no,那么 Match Host 只能使用 IP 地址,不能使用主机名
    • Match 指令必须放在 sshd_config 文件的最后部分,因为它会根据条件覆盖前面的全局配置

fromMatch Host 的区别和联系

  • 使用层次

    • from 是针对特定公钥的约束,只作用于 ~/.ssh/authorized_keys 文件中的特定公钥。
    • Match Host 是在全局 SSH 配置中控制客户端主机行为的指令,可以影响整个 SSH 配置文件的行为。
  • 使用场景

    • from 更适合精细化控制单个用户的公钥访问,尤其是在多用户服务器上,只需配置某个用户的公钥。
    • Match Host 更适合全局配置,比如为不同来源的主机或网段设置不同的安全策略。
  • 总结

    • from 条件 允许你为每个公钥设置基于来源 IP 地址或主机名的限制,主要用于细粒度控制单个用户或公钥的来源
    • Match Host 指令 则是服务器级别的配置,允许基于客户端的主机名或 IP 地址应用不同的 SSH 配置
  • 在实际使用中,这两者可以结合使用,通过 from 限制单个公钥的登录来源,同时通过 Match Host 在全局配置文件中对特定来源应用不同的 SSH 策略

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot助力医院数据管理

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

MySQL进阶学习一(2024.10.07版)

2024-10-06 -------------------------------------------------------------------------------------------------------------------------------- 1.一条SQL语句是如何执行的 单进程的多线程模型 MySQL的物理目录 show global variables like "%basedir%"; …

LSTM时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测

本文内容&#xff1a;Python实现LSTM长短期记忆神经网络时间序列预测&#xff0c;使用的数据集为AirPassengers 目录 数据集简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 数据集简介 AirPassengers 数据集的来源可以追溯到经典的统计和时间序列分析文献。原始数据集由 Box,…

面向对象特性中 继承详解

目录 概念&#xff1a; 定义&#xff1a; 定义格式 继承关系和访问限定符 基类和派生类对象赋值转换&#xff1a; 继承中的作用域&#xff1a; 派生类的默认成员函数 继承与友元&#xff1a; 继承与静态成员&#xff1a; 复杂的菱形继承及菱形虚拟继承&#xff1a; 虚…

VGG16模型实现MNIST图像分类

MNIST图像数据集 MNIST&#xff08;Modified National Institute of Standards and Technology&#xff09;是一个经典的机器学习数据集&#xff0c;常用于训练和测试图像处理和机器学习算法&#xff0c;特别是在数字识别领域。该数据集包含了大约 7 万张手写数字图片&#xf…

喜讯 | 攸信技术入选第六批专精特新“小巨人”企业

日前&#xff0c;根据工信部评审结果&#xff0c;厦门市工业和信息化局公示了第六批专精特新“小巨人”企业和第三批专精特新“小巨人”复核通过企业名单&#xff0c;其中&#xff0c;厦门攸信信息技术有限公司进入第六批专精特新“小巨人”企业培育。 “专精特新”企业是指具有…

图像分割恢复方法

传统的图像分割方法主要依赖于图像的灰度值、纹理、颜色等特征&#xff0c;通过不同的算法将图像分割成多个区域。这些方法通常可以分为以下几类&#xff1a; 1.基于阈值的方法 2.基于边缘的方法 3.基于区域的方法 4.基于聚类的方法 下面详细介绍这些方法及其示例代码。 1. 基…

代码随想录--栈与队列--用栈实现队列

队列是先进先出&#xff0c;栈是先进后出。 如图所示&#xff1a; 题目 使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 示例: MyQueue qu…

draw.io 设置默认字体及添加常用字体

需求描述 draw.io 是一个比较好的开源免费画图软件。但是其添加容器或者文本框时默认的字体是 Helvetica&#xff0c;一般的期刊、会议论文或者学位论文要求的英文字体是 Times New Roman&#xff0c;中文字体是 宋体&#xff0c;所以一般需要在文本字体选项里的下拉列表选择 …

分层解耦-05.IOCDI-DI详解

一.依赖注入的注解 在我们的项目中&#xff0c;EmpService的实现类有两个&#xff0c;分别是EmpServiceA和EmpServiceB。这两个实现类都加上Service注解。我们运行程序&#xff0c;就会报错。 这是因为我们依赖注入的注解Autowired默认是按照类型来寻找bean对象的进行依赖注入…

2-115 基于matlab的瞬态提取变换(TET)时频分析

基于matlab的瞬态提取变换&#xff08;TET&#xff09;时频分析&#xff0c;瞬态提取变换是一种比较新的TFA方法。该方法的分辨率较高&#xff0c;能够较好地提取出故障的瞬态特征&#xff0c;用于故障诊断领域。通过对原始振动信号设置不同信噪比噪声&#xff0c;对该方法的抗…

关于一个模仿qq通信程序

7月份的时候还在学校那个时候想要学习嵌入式Linux&#xff0c;但是还没有买开发板来玩&#xff0c;再学linux系统编程&#xff0c;网络编程&#xff0c;Linux系统的文件IO&#xff0c;于是学完之后想做一个模仿qq的通信程序于是就有了这个“ailun.exe”&#xff0c;因为暑假去打…

【数据结构与算法】线性表

文章目录 一.什么是线性表&#xff1f;二.线性表如何存储&#xff1f;三.线性表的类型 我们知道从应用中抽象出共性的逻辑结构和基本操作就是抽象数据类型&#xff0c;然后实现其存储结构和基本操作。下面我们依然按这个思路来认识线性表 一.什么是线性表&#xff1f; 定义 线性…

TryHackMe 第7天 | Web Fundamentals (二)

继续介绍一些 Web hacking 相关的漏洞。 IDOR IDOR (Insecure direct object reference)&#xff0c;不安全的对象直接引用&#xff0c;这是一种访问控制漏洞。 当 Web 服务器接收到用户提供的输入来检索对象时 (包括文件、数据、文档)&#xff0c;如果对用户输入数据过于信…

【springboot】使用代码生成器快速开发

接上一项目&#xff0c;使用mybatis-plus-generator实现简易代码文件生成 在fast-demo-web模块中的pom.xml中添加mybatis-plus-generator、freemarker和Lombok依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator&…

Python | 由高程计算坡度和坡向

写在前面 之前参加一个比赛&#xff0c;提供了中国的高程数据&#xff0c;可以基于该数据进一步计算坡度和坡向进行相关分析。 对于坡度和坡向&#xff0c;这里分享一个找到的库&#xff0c;可以方便快捷的计算。这个库为&#xff1a;RichDEM&#xff0c;官网地址如下 https…

SAP学习笔记 - 豆知识11 - 如何查询某个字段/DataElement/Domain在哪个表里使用?

大家知道SAP的表有10几万个&#xff08;也有说30多万个的&#xff0c;总之很多就是了&#xff09;&#xff0c;而且不断增多&#xff0c;那么当想知道一个字段在哪个表里使用的时候该怎么办呢&#xff1f; 思路就是SAP的表其实也是存在表里的&#xff1a;&#xff09;&#xf…

【Git】TortoiseGitPlink提示输入密码解决方法

问题 克隆仓库&#xff0c;TortoiseGitPlink提示输入密码 解法 1、打开TortoiseGit 下的puttygen工具 位置&#xff1a;C:\Program Files\TortoiseGit\bin\ 2、点击【Load】按钮&#xff0c;载入 C:\Users\Administrator\.ssh\ 文件夹下的id_rsa文件。 3、点击save private …

qt_c++_xml存这种复杂类型

demo&#xff0c;迅雷链接。或者我主页上传的资源 链接&#xff1a;https://pan.xunlei.com/s/VO8bIvYFfhmcrwF-7wmcPW1SA1?pwdnrp4# 复制这段内容后打开手机迅雷App&#xff0c;查看更方便 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>#include…

请散户股民看过来,密切关注两件大事

明天股市要开市&#xff0c;不仅散户股民期盼节后股市大涨&#xff0c;上面也同样想在节后来上一个“开门红”。 为此&#xff0c;上面没休假&#xff0c;关起门来办了两件大事&#xff0c;这两天发布消息已提前预热了。 两件大事如下&#xff1a; 一是&#xff0c;上交所10…