如何排查主机无法SSH问题

文/QianJunYe 2015-12-18 18:30:00

在日常的机器配置调试中,因误操作或者配置错误可能会导致无法正常的SSH连接到主机上,我们可以使用管理控制台的终端功能连接到主机上。 picture1 如上图,通过终端功能连接到服务器后开始做排查。


确定主机网络是否正常

首先我们需要确定主机的网络是否通畅,使用终端功能登陆到服务器上。

确定本机网络配置情况

输入ip add命令,查看服务器的本身网络配置是否正确,是否有外网网络:

[root@server~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:22:c8:a3:8f:27 brd ff:ff:ff:ff:ff:ff
    inet 10.128.132.XX/24 brd 10.128.132.255 scope global eth0
    inet6 fe80::222:c8ff:fea3:8f27/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:22:f2:94:cc:a0 brd ff:ff:ff:ff:ff:ff
    inet 211.155.92.XX/24 brd 211.155.92.255 scope global eth1
    inet6 fe80::222:f2ff:fe94:6c20/64 scope link
       valid_lft forever preferred_lft forever

根据命令如未查到有外网网卡,如是一区机器,需要确认是否购买了外网,三区的机器需要确定是否绑定了EIP,如果以上情况都符合,仍没有外网网卡。麻烦通过工单联系技术支持。

确定至外网的连通情况

如符合以上情况,使用ping命令,查看对外网络的连通情况。

[root@mos ~]# ping mos.meituan.com
PING mos.meituan.com (211.155.85.89) 56(84) bytes of data.
64 bytes from 211.155.85.89: icmp_seq=1 ttl=63 time=0.402 ms
64 bytes from 211.155.85.89: icmp_seq=2 ttl=63 time=0.226 ms
64 bytes from 211.155.85.89: icmp_seq=3 ttl=63 time=0.207 ms
64 bytes from 211.155.85.89: icmp_seq=4 ttl=63 time=0.233 ms
^C
--- mos.meituan.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3454ms
rtt min/avg/max/mdev = 0.207/0.267/0.402/0.078 ms

如有不通,麻烦通过工单联系技术支持。


防火墙与配置问题

美团云主机提供了功能强大的防火墙,我们的建议是使用我们控制台的防火墙,方便配置与调试。

ssh配置问题

首先请您使用如下命令,确定SSH是否提供了对外的服务

[root@mos ~]# netstat -antlp | grep sshd 
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1132/sshd
tcp        0      0 :::22                       :::*                        LISTEN      1132/sshd

截图如上,需要你确定是否有SSH程序在运行,如果没有运行,麻烦使用启动命令开启SSH服务,CentOS默认的启动命令是service sshd start

另外需要您看一下ssh程度的监听端口是否有修改过,如有修改,需要您确定服务器的iptables与控制台的防火墙,是否有做了相应的修改。

0.0.0.0 表示全部全部地址都监听,如果这里是127.0.0.1 那么代表只能本机上 ssh 连接的。需要修改/etc/ssh/sshd_config调整配置

另外/etc/ssh/sshd_config 中有相关的 参数 PermitRootLogin 看后面是否更改为了no .默认是yes ,即允许root登陆连接。

服务器本地防火墙

Linux默认采用iptables做为防火墙,可以使用如下命令测试iptables是否开启

[root@mos ~]# service iptables status
iptables: Firewall is not running.

如提示打开了,需要您执行 service iptables stop ,关闭iptables.如果您确实有开通需要,可以将iptables配置提交工单,我们技术支持会为您做分析

美团云控制台防火墙

在所有配置都完成后还有问题建议您可以看一下控制台的防火墙配置,默认的三条策略都是有开通默认的22端口的,如果您调整了端口配置,建议您可以新建策略,在其中增加您修改过的端口。 picture1 如上,如果您修改到了端口为2222,在上面增加这条策略就可以了。 如没有修改,直接使用默认的防火墙策略就行。


第三方安全软件问题

服务器默认会安装DenyHost防暴力破解软件,同时如果您有安装第三方安全软件,如安全狗,在一些敏感操作的情况下会被安全软件限制登陆。

Denyhost

美团云服务器默认安装的DenyHost针对暴力破解的情况为3次root用户登陆失败后其登陆地址会禁止登陆.4周后会释放这个屏蔽IP。 确定是否屏蔽可以参考如下步骤:

#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
# DenyHosts: Wed Dec  2 22:23:53 2015 | sshd: 125.16.240.194
sshd: 125.16.240.194
# DenyHosts: Thu Dec  3 04:35:47 2015 | sshd: 82.192.90.145
sshd: 82.192.90.145
# DenyHosts: Thu Dec  3 10:25:08 2015 | sshd: 159.122.135.246
sshd: 159.122.135.246
# DenyHosts: Thu Dec  3 21:20:05 2015 | sshd: 114.104.189.133
sshd: 114.104.189.133
# DenyHosts: Thu Dec  3 23:27:13 2015 | sshd: 185.29.9.164
sshd: 185.29.9.164

其中sshd: 125.16.240.194表示125.16.240.194这个IP被屏蔽了,您可以在其中找到您的IP删除这行便可以解除屏蔽。另如果您不确定您的IP。可以逐行使用#将此行注释,后测试。如您想直接关闭DenyHost,清空屏蔽记录。操作方式如下:

[root@dddd ~]# echo "" > /etc/hosts.deny
[root@dddd ~]# service denyhosts stop
Stopping denyhosts:                                        [  OK  ]
[root@dddd ~]# chkconfig denyhosts off

执行后您的服务器将不被DenyHost保护,所以建议谨慎操作。

安全狗

安装安全狗后如有多次密码错误与敏感操作,您可以使用iptables -L查看是否有屏蔽情况。

当然您也可以将您自己的出口IP加入到安全狗的白名单操作,操作方式参考安全狗文档

快速排查

日常SSH登陆时,也会有一些很明显的错误提示可以协助我们快速的定位问题。

提示Permission denied, please try again.时,输入密码错误的可能性比较大。

Connection closed by foreign hostConnection closed by peer 说明您与服务器的连接是正常的,可能的情况为DenyHost阻止,或者服务器内的进程阻止您登陆了。另外如果输入密码回车后没有任何提示,可能是您的SSH配置中禁了这个用户的登陆,如上排查都不能解决您的问题的话,您可以直接在控制台提工单联系技术支持为您处理您的问题。

知识共享许可协议
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

最新文章 全部