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

### 文章目录

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

检查 sshd 配置文件

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

shell 复制代码
grep UseDNS /etc/ssh/sshd_config

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

复制代码
#UseDNS yes

查看 sshd 配置文件的默认值

方法一

shell 复制代码
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 配置文件,下面的命令也会看到配置的更新

shell 复制代码
sshd -T | grep usedns

centos 默认是 yes

复制代码
usedns yes

修改 sshd 配置文件

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

复制代码
UseDNS no

重启 sshd 应用配置文件

shell 复制代码
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 策略

相关推荐
两点王爷8 分钟前
docker 运行自定义化的服务-后端
运维·docker·容器
邪恶的贝利亚1 小时前
FFMEPG常见命令查询
linux·运维·网络·ffmpeg
搜搜秀1 小时前
find指令中使用正则表达式
linux·运维·服务器·正则表达式·bash
七七powerful2 小时前
使用opentelemetry 可观测监控springboot应用的指标、链路实践,使用zipkin展示链路追踪数据,使用grafana展示指标
运维
Archie_IT3 小时前
修图自由!自建IOPaint服务器,手机平板随时随地远程调用在线P图
运维·服务器·前端·git·深度学习·npm·conda
行思理3 小时前
centos crontab 设置定时任务访问链接
linux·运维·centos
再玩一会儿看代码4 小时前
[特殊字符] 深入理解 WSL2:在 Windows 上运行 Linux 的极致方案
linux·运维·windows·经验分享·笔记·学习方法
我是小木鱼5 小时前
浅析Centos7安装Oracle12数据库
linux·运维·服务器·数据库
Pluto & Ethereal6 小时前
新手宝塔部署thinkphp一步到位
运维·服务器·阿里云·php·腾讯云
东枫落定6 小时前
泛微ECOLOGY9 记 数据展现集成 自定义开窗测试中对SQL 的IN语法转换存在BUG
运维·泛微·ecology9·自定义开窗·数据展示集成