为什么网络可以ping通,还是不能ssh到目标主机?

这篇具有很好参考价值的文章主要介绍了为什么网络可以ping通,还是不能ssh到目标主机?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  做运维工作,我们都是通过远程的方式去连接一台服务器或者虚拟机,很多初次做运维的朋友可能经常会遇到这样一个问题:我ping目标服务器的IP是通的,但是我通过ssh却不能连上主机。今天,就来浅谈一下,为什么你ping网络是通的,但是却不能连接到远程主机,当你弄懂了这个问题之后,以后遇到类似的问题,到可以迎刃而解。

认识网络架构和通信原理

  作为一名运维工程师,我们不光是会linux命令,会写shell脚本,会k8s,会…,很多人往往忽略了最重要的知识,那就是网络。
我大学是学网络工程的,我记得第一门专业课就是《计算机网络原理》,很多人又会觉得,学网络以后不就是搞交换机/路由器吗?确实学了网络更适合搞这些技术,但是我要说的是,计算机网络应该是每一位学计算机,搞IT的人必修的课程。无论你将来是做开发,还是做运维,还是其它的工作,了解网络通信的原理都是必须的技能。
  大部分人都学过或者是听说过,OSI网络7层模型,TCP/IP网络5层模型,如果你不是做协议开发的,你没你要很清楚网络每一层用的协议具体是怎么实现的,包括我在平时的工作中也验证了这一点,其实网络的原理你想真正搞懂确实很复杂,但你想把它想简单,它其实也很简单,你只需要记住:网络中的每一层协议,它其实就是在下一层的基础上,封装了一层新的协议去实现的,这也很符合我们生活中很多事物的特性。

为什么能ping通网络,ssh却连不上主机

  无论你是搞网络的,还是搞运维的,我们平时在工作中,遇到网络排错的时候,用的最多的命令就是ping了。ping使用的ICMP协议,他既不是网络层的协议也不是传输层的协议。ping一个IP地址无非就是能通或者不能通,能通就是网络可达,什么是网络可达?网络可达就是路由可达,可以可达就说明至少到网络层是通的,记住这一点。我举个简单的例子,假如你要点开浏览器去访问阿里官网,首要你要确保你自己的笔记本是能ping通阿里服务器的地址或者域名的。当然,如果你ping一个IP地址不通,能说明网络就是不通的吗?
  答案是否定的,这里存在一种特殊的情况,因为ping这个东西是可以在中间网络设备上给禁用掉的。我们经常会听到一句话:对方禁ping了。意思就是说对方在网络设备上做了策略,他不允许你在本端去ping它的IP地址。这种情况下,本来你们之间网络是通的,但是你去ping它,对端是不会给你响应的。此时你可以使用另外一个命令叫tracert,去探测路由是否是可达的。
  接下来问题来了,现在你ping对端通了,为什么SSH不上?这里你应该想到,当你使用ssh去连接一台主机的时候,你是不是会加上一个端口?有些同学可能会说我没有加端口啊,那是因为你使用了ssh协议的时候会默认加上一个22号端口,当你要远程的那台主机正好它启动ssh服务的时候,忘了修改端口,默认也会使用22端口。那么好了,当你和他都使用的是22端口,那么你们就是达成协议,自然你就可以远程访问他了。
  刚才我提到了一个很重要的词语:端口。当我提到端口的时候,你应该想到,这个关键字是在网络的传输层才会用到,也是就TCP/UDP协议。我在上文也提到了网络的架构,这里我们就可以说传输层它其实就是在网络层的基础上,又封装了一层协议,网络层是靠IP去通信,传输层是靠端口去通信,这下问题就有了解决答案,ping是去探测网络可不可达,ssh是端口通信,对端网络可达能证明端口也能访问吗?答案肯定是不可以的。

在网络可达的基础上分析ssh端口不能访问的原因

  端口其实就是对应一个服务,什么是服务?最简单的理解,1个软件就是1个服务或者说1个软件它至少包括了1种服务,我们能打开百度,就是百度为我们提供80端口,并且它这个端口对应的后端服务是正常的,所有它能做出响应,给我们返回一个页面。
  这里我们分析ssh端口不能访问的几种原因,我大概总结了3方面,可能性从小到大排列:

  1. 对方根本就没有启动ssh服务或者ssh服务挂掉了,首先需要对方检查他的主机ssh服务是否正常
  2. 对方修改了ssh端口,ssh服务默认使用的是22端口,通常我们不会使用默认的端口,会去自定义一个端口号。需要对端明确他使用的端口是什么
  3. 防火墙上做了限制,了解网络设计架构的同学应该知道,一般再网络的出口或者网络的入口会添加一个防火墙设备,这玩意儿就是专门针对端口做限制的。举个例子,你使用的源地址是192.168.10.100,如果防火墙上加了对源IP-ssh目的端口的白名单,正好你的源IP没在白名单之中,那么这一辈子你都别想ssh连上它的主机,除非防火墙宕机了。

问题的扩展延申

  我浅谈了一下网络的知识及最常见一个问题的排查思路,如果你作为一个运维工程师,你在平时的工作中,遇到某个服务或者某个网页打不开的时候,都是按照这个思路去排查。无非就是:1.分析网络可不可达;2.测试端口通不通。当然端口不通一般只是在系统上线的时候,我们会去排查中间的网络但是不是对端口做了限制,当系统真正上线后,遇到服务访问不了的时候,一般都是检查服务是否挂掉了,不会再去纠结网络中的问题。
  对于那些老鸟,我这篇文档就像是开胃小菜,没什么学习或者阅读的价值,因为大家经验都很丰富了,遇到这种问题早都在脑海中形成了一套完整的处理机制。但是对于出处茅庐的小将,亦或是刚转行做运维的同学,还是提供了一些宝贵的经验,因为本人也是在遇到问题慢慢摸索,总结经验中摸爬滚打过来的。文章来源地址https://www.toymoban.com/news/detail-697875.html

到了这里,关于为什么网络可以ping通,还是不能ssh到目标主机?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Elasticsearch:索引状态是红色还是黄色?为什么?

    在我之前文章 “Elasticsearch:如何调试集群状态 - 定位错误信息” 中,我有详细介绍如何调试集群状态。在今天的文章中,我将详细介绍如何故障排除和修复索引状态。 Elasticsearch 是一个伟大而强大的系统,特别是创建一个可扩展性极强的分布式数据存储,并自动跟踪、管理

    2023年04月09日
    浏览(35)
  • 为什么 volatile不能保证原子性

    volatile 本质上是一种内存屏障,它可以确保在 volatile 变量写操作和读操作之间不会发生重排序,这样就可以保证对 volatile 变量的修改能够立即对其他线程可见。但是, volatile 只能保证可见性,并不能保证原子性。 在 Java 中,原子性是指一个操作是不可中断的,即使在

    2024年02月15日
    浏览(44)
  • 为什么sessionStorage不能代替vuex

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 译为“会话存储”,也是HTML5新增的一个存储对象, 用于本地临时存储同一窗口的数据,在 关闭窗口之后 将会删除这

    2024年02月09日
    浏览(55)
  • STM32为什么不能跑Linux?

    STM32是一系列基于ARM Cortex-M微控制器的产品,它们主要用于嵌入式系统中。而Linux则是一个开源的类Unix操作系统,主要面向的是桌面电脑、服务器等资源丰富的计算机。虽然理论上可以将Linux移植到STM32上运行,但是由于两者之间存在着很多技术差异,导致在实际使用中面临着

    2024年04月10日
    浏览(56)
  • 为什么安装了SSL证书,网站还是显示不安全?

    SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。由于http明文方式传输缺乏安

    2024年02月02日
    浏览(86)
  • 为什么MySQL单表不能超过2000万行?

    摘要: MySQL一张表最多能存多少数据? 本文分享自华为云社区《为什么MySQL单表不能超过2000万行?》,作者: GaussDB 数据库 。 最近看到一篇《我说MySQL每张表最好不要超过2000万数据,面试官让我回去等通知》的文章,非常有趣。 文中提到,他朋友在面试的过程中说,自己的

    2024年02月05日
    浏览(45)
  • 【PDF密码】PDF文件不能打印,为什么?

    正常的PDF文件是可以打印的,如果PDF文件打开之后发现文件不能打印,我们需要先查看一下自己的打印机是否能够正常运行,如果打印机是正常的,我们再查看一下,文件中的打印功能按钮是否是灰色的状态。 如果PDF中的大多数功能按钮以及打印按钮都是灰色的状态,那就证

    2024年02月13日
    浏览(51)
  • inline内联函数为什么不能是虚函数?

    1. inline内联函数为什么不能是虚函数? 虚函数可以是内联函数 ,内联是可以修饰虚函数的, 但是当虚函数表现多态性的时候不能内联 。 理由如下:内联是在发生在编译期间,编译器会自主选择内联,而虚函数的多态性在运行期,编译器无法知道运行期调用哪个代码,因此

    2024年02月21日
    浏览(46)
  • mysql的主键索引为什么不能null

    这是一个非常奇怪且有趣的问题。可以通过官方文档进行解读 https://dev.mysql.com/doc/refman/5.7/en/glossary.html A special value in SQL, indicating the absence of data. Any arithmetic operation or equality test involving a NULL value, in turn produces a NULL result. (Thus it is similar to the IEEE floating-point concept of NaN, “not

    2024年02月14日
    浏览(62)
  • springboot~InvocationHandler中为什么不能使用@Autowired

    @Autowired 是 Spring Framework 中用于自动注入依赖的注解,通常情况下可以正常工作,但有一些情况下可能无法获取到 bean 对象: Bean未定义或未扫描到 :如果要注入的 bean 没有在 Spring 上下文中定义或者没有被正确扫描到, @Autowired 将无法找到要注入的 bean。确保你的 bean 配置正

    2024年02月10日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包