你还在为SFTP连接超时而困惑么?

这篇具有很好参考价值的文章主要介绍了你还在为SFTP连接超时而困惑么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

在最近的项目联调过程中,发现在连接上游侧SFTP时总是需要等待大约10s+的时间才会出现密码输入界面,这种长时间的等待直接导致调用文件接口时连接sftp超时问题。于是决定自己针对该问题进行一下排查,查询了相关资料,并逐个试验了一下网上提供的解决方案,然后在文章中详细记录问题的排查及分析过程,并将收集到的一些常见的SFTP的超时原因及解决方案进行了整理如下。

2. 问题排查过程

  • 首先使用ssh -v命令(调试模式)进行远程登录调试
ssh -v -oPort=端口号 root@ip地址
  • 在调试模式观察调试信息,确定主要的耗时卡点所在位置
  • 根据耗时卡点信息确认问题所属服务端还是客户端;

假如调试信息卡在debug1: SSH2_MSG_SERVICE_ACCEPT received位置,则表示主要的耗时卡点在服务端,需要修改服务端的配置文件();

假如调试信息卡在debug1: Next authentication method: gssapi-with-mic 位置,则表示主要的耗时卡点在客户端,需要修改服务端的配置文件();

◦ 假如两个阶段停留时间均较长,则需要同时修改服务端和客户端的配置文件;

  • 经排查发现此次SFTP连接超时的调试信息在debug1: SSH2_MSG_SERVICE_ACCEPT received位置停留时间较长,故而需要修改服务端的配置文件,需要调整文件如下:

关闭DNS反向解析:在Linux中,默认是开启了SSH的反向DNS解析,服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗(说到底还是反向查询的问题)。这个会消耗大量时间,是连接慢的主要卡点,因此可以通过关闭该选项;

配置文件位置

/etc/ssh/sshd_config

需要修改选项

UseDNS no

关闭GSSAPI认证:服务器端启用了GSSAPI。登陆的时候客户端需要对服务器端的IP地址进行反解析,如果服务器的IP地址没有配置PTR记录,那么就容易在这里卡住了。

配置文件位置DNS选项文件,具体修改内容

GSSAPIAuthentication  no

【未尝试该方案】nsswitch;修改配置文件nsswitchhosts选项修改“hosts”选项,hosts: files dns 表示是对于访问的主机进行域名解析的顺序,是先访问file,也就是/etc/hosts文件,如果hosts中没有记录域名,则访问dns进行域名解析。如果dns也无法访问,就会等待访问超时后返回,因此等待时间比较长。注意:如果SERVER需要通过域名访问其他服务器,则需要保留此行。

nsswitch文件位置

/etc/nsswitch.conf

具体修改内容为:(注意:如果SERVER需要通过域名访问其他服务器,则需要保留此行。ps:二次强调

hosts:          files 

◦ 【未尝试该方案目标主机hosts:修改目标主机的/etc/hosts文件,将本地主机的IPHostname添加进去;

◦ 修改IgnoreRhosts选项:IgnoreRhosts参数可以忽略以前登录过主机的记录,设置为yes后可以极大的提高连接速度;

文件位置

/etc/ssh/sshd_configIgnoreRhosts

具体修改为:

sshd_configIgnoreRhosts yes
  • 最后执行/etc/init.d/sshd restart重启sshd进程使上述配置生效即可,通过关闭配置文件中DNS反向解析GSS认证确实可以有效提升SFTP连接速度;那么问题来了?

为什么需要修改这两个选项呢?

◦ 修改这两个选项会带来什么样的风险么?

◦ 带着这几个问题我们对DNS反向解析GSS认证继续进行调研=======

3. 知识扩展

3.1. 什么是DNS反向解析?

DNS 的用途通常是将 域名解析 为 IP 地址。这被称为正向解析,我们每次访问互联网上的站点时都会执行此操作。顾名思义,反向 DNS(或rDNS)是一种将 IP 地址解析为域名的方法。

3.2. 反向DNS的查找过程?

在Windows中使用nslookup或者ping -a命令,在Linux中手动执行rDNS查找命令为:

dig -x ip地址

3.3. 什么是GSS认证?

GSSAPI – Generic Security Services Application Program Interface,它是另一个身份认证框架,基于这个框架也有多种认证机制的实现,如Kerberos,NTLM,SPNEGO等,但最为人所熟知还是Kerberos5的实现,所以会有很多人把“GSSAPI”等同于“Kerberos认证”。GSSAPI的程序库是cyrus-sasl-gssapi,它需要依赖SASL的共享程序库cyrus-sasl-lib。

举个栗子==>

客户端连接到服务器说:“Hi,我要登录,我支持SASL,请问我要如何证明自己的身份?”

服务器收到连接并作出响应:“收到,我也支持SASL,具体来说支持如下几种SASL认证实现:PLAIN,CRAM-MD5,GSSAPI,…”

客户端回答:“我想使用其中的GSSAPI。”

服务器响应: “收到。你知道GSSAPI也是一个认证框架,在GSSAPI方式下,具体来说我又支持:Kerberos5,SPNEGO,…”

客户端回复:“让我们使用Kerberos5吧,给你我的加密票据…”

◦ 在什么是GSS认证的例子中引入了一个新的名词(SASL),那么什么是SASL?

SASL – Simple Authentication and Security Layer,中文译作:“简单认证与安全层”,它是一个在网络协议中用来认证和数据加密的构架。SASL的官方定义非常抽象,很难让人直接明白它是做什么的。实际上,我们可以把SASL理解为一个用于身份认证(Athentication)的编程框架或者是一组接口定义,不同的认证机制可以基于这个框架编写各自的实现,从而允许客户端和服务器之间通过协商选出一种共同支持的认证机制完成身份认证。引入SASL后,应用系统不必再针对某一种认证机制去硬编码,而是具备了认证机制的可插拔能力;对于应用系统的开发者而言,使用SASL可以避免从一种认证机制的最底层API开始编写实现方案,将精力集中在与SASL框架的集成上即可,因为与各种认证机制对接的细节都已由相应的SASL插件实现了。作为SASL最主流的实现Cyrus SASL,其官方文档列出了大量开箱即用的插件: https://www.cyrusimap.org/sasl/#features 。SASL由共享程序库cyrus-sasl-lib和若干面向特定认证机制的实现库,如:cyrus-sasl-plain,cyrus-sasl-gssapi等组成。

emm,已经开始逐渐复杂啦,总结就是GSSAPI认证只是一种安全框架和接口标准,具体更深入的相关知识后续学习下再另起一篇文章进行总结哈!

4. 总结

跟着网上给出的解决方法逐个进行验证倒是没有什么难度,比较烧脑的是其中所涉及到的各种修改的原因以及如何根据现有问题定位到去修改该配置。文中涉及到的GSSAPI认证在今天之前完全是一个陌生的概念,现在通过查询资料也只是有了一个浅层的概念认知,后续还需要对文中所引入的相关知识及问题再深入学习!ok,以上就是对今天的SFTP连接超时问题进行了排查分析,是一次总结也是一次分享。

作者:京东科技 宋慧超

来源:京东云开发者社区 转载请注明来源文章来源地址https://www.toymoban.com/news/detail-746046.html

到了这里,关于你还在为SFTP连接超时而困惑么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 还在为仓库杂乱发愁?教你ABC仓库管理分类法!

    众所周知,生产制造型企业中的库存存货种类往往很多,动辄几百种,甚至成千上万种。如果管理者找不到操作重点,必定会累得直不起腰,且容易出现管理混乱而造成一定损失。如果我们将工作分清主次,抓住主要的管理对象,例如,如果我们将ABC分类法则运用在库存管理

    2024年02月05日
    浏览(42)
  • 还在为选择客服系统发愁?这5款任你选!

    在当今的数字世界里,提供优质的客户服务变得比以往任何时候都更加重要。随着在线购物和远程工作的兴起,企业必须拥有强大的在线客户服务系统来处理客户查询和问题。高质量的客户服务能够为企业带来长期的收益,并获得良好的品牌效益。不仅如此,为客户带去优质

    2024年02月07日
    浏览(37)
  • 还在为没机器练手搭集群而苦恼?快进来免费领机器了!

    前几天,在我们的技术交流群里看到有小伙伴问:有没有练手搭建Redis集群的方式推荐: 这里不禁让我想到,对于各种集群和分布式基础设施的搭建,其实是每个开发者进阶时候都要经历的一个成长过程。但是,这里对于不少开发者来说,却又面临着一个现实问题: 我没有足

    2024年02月08日
    浏览(46)
  • 还在为找不到AI生产力工具犯愁?这里整理了最全AI工具导航网站

    许多新兴的AI工具和服务正在为人们的生活和工作带来巨大的改变,为了更加方便的寻找AI工具和工具分类索引的需求,也紧跟着出现了一批AI工具导航汇聚各类精选实用的AI工具,为用户提供便捷的分类索引,帮助快速找到适合自己的AI工具。 以下是我经常用到的一些AI工具集

    2024年03月15日
    浏览(67)
  • HVV就绪!你还在围观考虑吗?

    “护网去了坐着就行,一天给1000” “护网有免费美味的盒饭!” “不仅一天有1000,还包住!” “连路费都可以报销” 你有没有在从事网络安全行业的人口中听到这些内容?怎么样?是不是很诱人?是不是觉得还有这种天上掉馅饼的好事?自己也蠢蠢欲动了? 冷静!在冲动

    2024年02月15日
    浏览(43)
  • 还在为表情包而发愁吗?今天教你用 Python 画一个奸笑(滑稽)表情(内附源码)

    微信自带的表情大家应该都用过,其中奸笑(其他的平台也有叫滑稽的)的表情使用率算是比较高的,对于这个表情,有的人喜欢,也有的人不喜欢,这个都是正常的,我们不讨论这个。 大家应该都知道 Python 的 turtle 库可以画画,本文我们就使用这个库画一个奸笑表情。 注

    2024年02月04日
    浏览(48)
  • 【概念】还在为fabric而烦恼?这是在我理解下的fabric 关键概念,拥有这一篇就够了

    如果,非要在每一条链中评选出几个比较好用且概念简单的链的话,公有链就是Bitcoin(比特币网络) 和 Ethereum(以太坊),私有链也是以太坊,而联盟链可以说是很少很少国产的FISCO-BCOS算一个 咦?我们这不是hyperledger fabric(以下简称fabric)的专场吗?怎么没有他呢? 是这

    2024年02月12日
    浏览(42)
  • 都2023了,你还在这样发朋友圈吗?

    都2023年了,你还在照着时间表发朋友圈? 又不是每天打卡上班,还要规定你什么时候发什么内容。 如果我们都这样发,那客户看到的都是一模一样的内容,就像流水线上的工人..... 可以试试定时发圈,提前编辑好朋友圈内容,选择好日期和时间点,到点就会自动发出。 更绝

    2024年02月08日
    浏览(49)
  • 记录--你还在使用websocket实现实时消息推送吗?

    在日常的开发中,我们经常能碰见服务端需要主动推送给客户端数据的业务场景,比如数据大屏的实时数据,比如消息中心的未读消息,比如聊天功能等等。 本文主要介绍SSE的使用场景和如何使用SSE。 我们常规实现这些需求的方案有以下三种 轮询 websocket SSE 在很久很久以前

    2024年02月19日
    浏览(40)
  • office2021与365你还在纠结吗?快来看看

    有不少小伙伴跟我说自己用的 Office 存在各种问题。 比如字体颜色下拉菜单点不动; ​文件打不开; ​ 或者经常卡顿、闪退等。 ​ 出现这些问题,多半是因为装了盗版 Office,或者没有将 Office 更新至最新版。 所以,解决这些问题的根本方法还是使用正版 Office ,并及时更

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包