ssh连接失败,排错经验

news/2024/11/17 7:49:24/文章来源:https://www.cnblogs.com/gaoyanbing/p/18351220

一、场景描述

ssh连接服务器,发现连接失败,但是对应服务器的ip能够ping通。

场景:

复制代码
[root@yl-web ~]# ssh root@10.1.101.35
ssh_exchange_identification: read: Connection reset by peer
[root@yl-web ~]# ping 10.1.101.35
PING 10.1.101.35 (10.1.101.35) 56(84) bytes of data.
64 bytes from 10.1.101.35: icmp_seq=1 ttl=64 time=0.587 ms
64 bytes from 10.1.101.35: icmp_seq=2 ttl=64 time=0.722 ms
64 bytes from 10.1.101.35: icmp_seq=3 ttl=64 time=0.475 ms
复制代码

ping是一个网络层的协议,只是表面网络在3层是通的;

ssh是应用层协议,具体还是从主机上找原因。

二、排错

1、ssh -v

用ssh -v去连有问题的服务器,会有比较详细的调试信息在屏幕上输出,可以帮助判断是哪一步出了问题。

主要是看是客户端还是服务器的问题。如果是客户端的问题,应该log中有写。如果是没有什么有用信息,就可能是服务器端出问题了。

复制代码
[root@yl-web ~]# ssh -v root@10.1.101.35
OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Connecting to 10.1.101.35 [10.1.101.35] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
ssh_exchange_identification: read: Connection reset by peer
复制代码

2、连接服务器

现在看起来是服务器出问题了,虽然不能ssh到服务器,但一般来说主机会提供一些方法比去让你连接,比如通过物理终端连进去,具体情况具体对待了,总之就是要连接到服务器上。

3、写一个排错弯路,但也是有用的

如果有debug1: Connection refused by tcp wrapper之类的log可参考这一步。

就是说你的客户端ip可能被服务器给禁掉了,fail2ban或者其他的程序可能把你的客户端ip扔到/etc/hosts.deny中了。

通过vi /etc/hosts.allow查看

加上一行sshd: ALL。

然后重启ssh。

#service sshd restart

如果问题真的出在ip被禁,这样重启之后应该就ok了。

客户端重新ssh试一下:

复制代码
[root@yl-web ~]# ssh -v root@10.1.101.35
OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Connecting to 10.1.101.35 [10.1.101.35] port 22.
debug1: connect to address 10.1.101.35 port 22: Connection refused
ssh: connect to host 10.1.101.35 port 22: Connection refused
复制代码

说明我的问题不在这里。

4、两条有用的命令

在服务器上执行下面命令可以显示ssh的所有 log。

centos系统如下:

#service sshd stop
#/usr/sbin/sshd -d

如果是ubuntu可能命令是:sudo service ssh stop ,sudo /usr/sbin/sshd -d

问题出现了: /var/empty/sshd must be owned by root and not group or world-writable。

是权限的问题了,查看一下。

我的权限变成777了,而sshd这个目录

正常情况该目录的权限应该是:

[root@yl-web ~]# ll /var/empty/
total 0
drwx--x--x. 2 root root 6 May 13 03:41 sshd

 修改权限:

改好权限后重启sshd服务【service sshd restart】。客户端再ssh就ok,大功告成了。

5、命令简介

至此问题已解决,但是/usr/sbin/sshd -d又是什么意思呢?

# man sshd看一下这两个参数。

     -D      When this option is specified, sshd will not detach and does not become a daemon.  This allows easy monitoring of sshd.-d      Debug mode.  The server sends verbose debug output to standard error, and does not put itself in the background.  The server also will not fork and will only process one connection.  Thisoption is only intended for debugging for the server.  Multiple -d options increase the debugging level.  Maximum is 3.

 -d是debug模式,服务器会向屏幕输出详细的debug信息,服务器只能有一个ssh链接。

三、题外话

虽然问题解决了,回想一下为什么会出这个问题?因为我昨天在解决一个日志权限的问题时,暴力的将每层目录权限都设置成777,想试探一下是否是目录读写权限的问题,然后再缩小权限,结果影响到了ssh登录。

想想解决一个问题若不能知道原理,很容易放大问题,甚至出现新bug。写代码需谨慎,排错需谨慎,知其然不知其所以然很重要。

参考:

Connection Reset By Peer

 

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4709805.html有问题欢迎与我讨论,共同进步。

如果觉得本文对您有帮助~可以微信支持一下:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向忙碌的-Java-开发者的-Python-教程-全-

面向忙碌的 Java 开发者的 Python 教程(全)原文:Python for the Busy Java Developer 协议:CC BY-NC-SA 4.0一、语言 让我们从了解 Python 与 Java 的不同之处开始我们的 Python 之旅。在下一章深入研究 Python 的语法之前,我将帮助你设置 Python。 Python 是什么? Pytho…

maven搭建的springboot项目,引用了其他moudle的类,明明有这个类,install的时候确报错找不到这个类

其实这个问题是maven打包插件引起的,正常配置,install后包内首层会出现BOOT-INF这个目录,导致别的moudle打包install引用时找不到正确的目录 正常配置 打包后看引用的jar包就会有一层BOOT-INF目录包括着。 修改配置为下图,重新打包就没有了BOOT-INF目录了。再次引用并insta…

vue+iview-table点击展开展示内容,表格嵌套

实现如下效果的表格嵌套: 点击展开,展示tabs。 table的columns里设置展示的属性,然后属性里设置返回一个组件,然后在组件里写嵌套的内容。 <Table :columns="tableColumns" :data="tableData" style="width:100%" @on-selection-change=&…

Python-和-PowerShell-协作教程-全-

Python 和 PowerShell 协作教程(全)原文:PowerShell and Python Together 协议:CC BY-NC-SA 4.0一、面向调查人员的 PowerShell 简介 PowerShell 提供了一个强大的获取引擎,可以从实时系统、服务器、外围设备、移动设备和数据驱动的应用程序(如 Active Directory)中获取大…

Blender-Python-API-教程-全-

Blender Python API 教程(全)原文:The Blender Python API 协议:CC BY-NC-SA 4.0一、Blender 界面 本章讨论并定义 Blender 界面的组件。它作为我们在整个文本中讨论界面时使用的词汇的参考。我们将关注 Python 开发中最常用的接口组件,并为高效的 Python 脚本设置自定义接…

2024暑期学习(一)

摸鱼~2024暑期学习(一) 非常非常非常感谢ve1kcon!^ ^✌️2024年暑期学习 (1) - ve1kcon - 博客园 (cnblogs.com) 学习内容: 1.复现了一点点题目 2.了解了C++异常处理 3.学习了Tmux的使用 cqb2024x ctf stdout 前置内容(copy): setvbuf() 函数的原型如下 int setvbuf(FILE *s…

数字样机:惯性导航系统控制单元仿真

01.简介 惯性导航系统 (INS,Inertial Navigation System) 基于惯性原理建立,而惯性是物体自身的固有属性,因此其工作时既不依赖于外部信息,也不向外部辐射能量,优于卫星导航与无线电导航,是一种具备隐蔽性、自主性的导航系统,被广泛应用于航空航天、无人机、智能交通等各…

宝塔配置域名反向代理到ip+端口的接口地址

宝塔配置域名反向代理到ip+端口的接口地址 添加站点 配置域名配置反向代理申请https证书[Haima的博客] http://www.cnblogs.com/haima/

从STM32CubeMX导入项目到Embedded Studio。(原文题目:Import projects from STM32CubeMX to Embedded Studio)

CubeMX生成项目,导入到Embedded Studio,并添加必要的文件原文链接 https://wiki.segger.com/Import_projects_from_STM32CubeMX_to_Embedded_Studio 原文来自于SEGGER的wiki,题目是Import projects from STM32CubeMX to Embedded Studio 原文最后编辑于 2022/2/21. 摘要: C…

达梦数据库有关hash及分组等操作相关优化

最近在项目中调试存储过程碰到一些关于hash及分组相关的性能问题 示例1:在调试过程中, 该sql执行很久后面报超出全局 hash join 空间的错误,重新调整HJ_BUF_GLOBAL_SIZE ,执行一个小时也不出结果。 INSERT INTO t_test (SELECT FundID, SeatNo, SUM(Balance), SUM(Availabl…

一文搞懂MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM及其关系

MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM各个系统到底是什么意思? 今天一文就给大家分享! 在企业管理中,各种信息系统扮演着至关重要的角色,它们如同企业的神经系统,确保各个部分高效协同运作。MES(Manufacturing Execution System)制造执行系统,就如同工厂…