当前位置: 首页 > article >正文

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

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

      • Match Host 192.168.1.100
            AllowUsers 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.kler.cn/news/342824.html

相关文章:

  • 实战交易策略 篇九:均线止盈策略
  • 计算机视觉之OpenCV vs YOLO
  • 什么是快充协议、支持多协议的USB Type-C受电端取电芯片
  • ARM base instruction -- movn
  • 基于SSM框架和Layui的学院课程安排系统的设计与实现(源码+定制+定制)
  • 【git】如何生成SSH key用于无需账号登录git仓库推送(需要令牌的问题)
  • JAVA的ArrayList 和 LinkedList的区别
  • 基于Python的摄影平台交流系统
  • MATLAB与R语言在建模中的合作与应用(上篇)
  • 跨境网络专线SD-WAN:跨境电商网络问题的解决方案
  • 编程的魅力
  • C#中,虚方法(virtual) 和 抽象方法(abstract)的应用说明
  • QT知识点
  • tp8自带的文件缓存如何配置
  • 计算机专业有哪些必修课程推荐?
  • Android SELinux——安全策略(三)
  • “element-plus“: “~2.6.1“和“element-plus“: “^2.6.1“在xue项目package.json配置的主要区别
  • LINUX 系统管理操作
  • C语言_内存函数
  • 【Zookeeper】Windows下安装Zookeeper(图文记录详细步骤,手把手包安装成功)