ssh连接失败,排错经验

一、场景描述

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有问题欢迎与我讨论,共同进步。

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

转载于:https://www.cnblogs.com/Vowzhou/p/10482138.html

ssh连接失败,排错经验相关推荐

  1. 设备ssh连接失败问题

    ** 设备ssh连接失败处理方法 **Linux连接ssh失败的处理方法 产生这个错误的原因:Ssh相同ip的数据密钥产生冲突导致. 按照如上指令删除之前的ssh数据即可. Windows下SSH连接 ...

  2. 安装宝塔面板后原ssh连接失败问题及解决

    问题: 安装宝塔面板后发现原ssh连接失败 原因: 宝塔面板自带一个单独的防火墙, 默认只放行22端口作为ssh 连接端口,如果之前为了服务器安全改过ssh连接端口,那么该端口就会被这第二个防火墙的放 ...

  3. SSh连接失败,Socket error Event: 32 Error: 10053.

    大致情形是,服务器突然连不上,显示错误 Socket error Event: 32 Error: 10053. connection closing-socket close. connection ...

  4. ssh连接缓慢 ssh连接失败问题 Linux 脚本解决ssh连接缓慢问题,windows解决本地ssh连接失败

    解决sshd连接缓慢 Linux系统 脚本 #!/bin/bash #更改ssh连接缓慢问题 echo "请输入要更改的主机名,回车跳过" read i if [[ "$ ...

  5. vscode ssh连接失败

    windows上使用vscode ssh连接到linux服务器,一直可以正常使用,但是突然就连接失败了,报错一下log 原因是:vscode自己更新了,导致原有的服务器上~/.vscode-serve ...

  6. ssh连接失败报错:Socket error Event: 32 Error: 10053.

    问题:使用远程连接工具ssh连接局域网内的主机,刚连接成功一会儿就断开连接,报下面的错误信息 Socket error Event: 32 Error: 10053. Connection closi ...

  7. 服务器ssh升级导致的java程序ssh连接失败

    原本项目中使用的jar包为ganymed-ssh2-build210.jar,升级至ganymed-ssh2-261.jar,但是连接还是失败. 经过百度搜索后,将jar包改为:com.jcraft: ...

  8. ssh连接虚拟机的linux_openstack系列之运维排障:虚拟机SSH连接失败

    虚拟机报错 报错信息如下 [root@node1 ceph]# ssh root@192.168.1.69The authenticity of host '192.168.1.69 (192.168 ...

  9. 华为升级系统服务器连接失败,与更新服务器连接失败

    与更新服务器连接失败 内容精选 换一换 对于密码鉴权方式创建的Windows 2012弹性云服务器,使用初始密码以MSTSC方式登录时,登录失败,系统显示"第一次登录之前,你必须更改密码.请 ...

最新文章

  1. 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
  2. Ajax全局加载框(Loading效果)的配置
  3. 2021年春季学期-信号与系统-第十三次作业参考答案-第三小题
  4. Ubuntu下安装Node.js
  5. ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
  6. 对象创建方法,对象的内存分配,对象的访问定位
  7. 用Dropout思想做特征选择,保证效果还兼顾了线上性能?
  8. mysql设计与实现_mysql设计与开发
  9. ubuntu mysql混合开发_mysql5.7主从同步 ubuntu
  10. C#串口通信工作笔记0001---上位机开发_嵌入式_串口助手_收发数据开发
  11. Visual Studio 2008 编译程序时的 mt.exe 返回错误
  12. ASP.net在线购物商城系统完全解析
  13. 计算机操作系统第四章测试题及答案
  14. CUDA各版本下载地址
  15. 更新win7原版镜像中添加usb3.0驱动
  16. 计算机检索系统功能,文学多功能计算机自动检索系统研究
  17. Qualcomm笔记
  18. postgresql源码学习(38)—— 备份还原② - do_pg_stop_backup函数
  19. windows系统扩展C盘的工具推荐(解决了C盘和压缩卷不相邻无法扩展C盘问题)
  20. 软件编程c语言5级,全国青少年软件编程等级考试标准(c语言1级-10级)-20190927.pdf...

热门文章

  1. portlet_Portlet生命周期
  2. python set_Python Set联合
  3. junit 重复测试多个类_JUnit重复测试– @RepeatedTest
  4. TinyLog –轻量级Java日志记录框架教程
  5. mysqli得到记录数量
  6. 测试sql server服务是否配置正确
  7. 数据库改名系列(数据库名,逻辑名,物理文件名)
  8. 30. Substring with Concatenation of All Words
  9. 解决vmware“二进制转换和长模式与此平台兼容.....”问题
  10. hdu 1856 并查集 求最大的子树含有元素的个数