为啥我可以 ping 服务器但无法通过 SSH 连接? [关闭]

Posted

技术标签:

【中文标题】为啥我可以 ping 服务器但无法通过 SSH 连接? [关闭]【英文标题】:Why can I ping a server but not connect via SSH? [closed]为什么我可以 ping 服务器但无法通过 SSH 连接? [关闭] 【发布时间】:2012-09-24 18:41:36 【问题描述】:

当我 ping 我的服务器时,它会响应:

user@localhost:~$ ping my.server
PING my.server (111.111.111.11) 56(84) bytes of data.
64 bytes from my.server (111.111.111.11): icmp_req=1 ttl=42 time=38.4 ms
64 bytes from my.server (111.111.111.11): icmp_req=2 ttl=42 time=50.0 ms
64 bytes from my.server (111.111.111.11): icmp_req=3 ttl=42 time=58.6 ms
^C
--- my.server ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 38.419/49.037/58.637/8.287 ms

但是当我尝试 ssh(我一直在做的事情,并且过去几个小时一直在同一连接上做的事情)时,它挂起:

user@localhost:~$ ssh my.server

http://speedtest.net 说我的连接有 1.5 Mbps 的下载速度和 0.4 Mbps 的上传速度。

ssh 挂起有什么原因吗?


答案中提供的建议的结果

来自@nsfyn55

user@localhost:~$ telnetmy.server 22 
Trying 111.111.111.11...
Connected to my.server
Escape character is '^]'.
SSH-2.0-OpenSSH_4.3
Connection closed by foreign host.

来自@vahid:

user@localhost:~$ nc -v -w 1 111.111.111.111 -z 22
nc: timeout cannot be negative

【问题讨论】:

尝试ssh -v 看看它在哪个点停止。 ping 表明在这个地址有东西在监听/应答。 ssh 是一个连接到本机的协议,它需要 ssh 守护进程启动并运行,并且需要打开一个端口(通常是 22 端口)。 @MichaelKrelin-hacker 它停在debug1: auto-mux: Trying existing master 嗯,那是一条相当多的消息,尝试用谷歌搜索它 - 很多关于 sequel-pro/ssh code.google.com/p/sequel-pro/issues/detail?id=1095 的消息都回来了 - 但我想知道你是否需要等待更长时间,看看是否还有其他东西返回我还会检查 serverfault 链接 - 你可能需要设置一个控制器来持久连接到这个主机 - serverfault.com/questions/408416/… 但我会尝试上述帖子中概述的两种方法,即 ControlMaster no 以及一次定义另一个配置,重新启动 sshd(应该没有必要,但为了保证)然后重试 ssh -vakx主机名并给它时间 【参考方案1】:

ping(ICMP 协议)和 ssh 是两种不同的协议。

    可能是 ssh 服务未运行或未安装

    防火墙限制(本地到服务器,如 iptables 甚至 sshd 配置锁定)或(保护传入网络托管 111.111.111.111 的流量的外部防火墙)

首先检查ssh端口是否启动

nc -v -w 1 111.111.111.111 -z 22

如果成功,则 ssh 应该通信,如果没有,则在解除限制或启动 ssh 之前它将永远不会工作

【讨论】:

我得到“nc:超时不能为负” nc -v -w 1 localhost -z 22 连接到 localhost 22 端口 [tcp/ssh] 成功!您应该看到成功尝试删除 -w 1 所以 nc -v 1111.111.111.111 -z 22 - 您需要成功才能使用 ssh - 但在下面阅读您可以远程登录到端口 22,这听起来像是您有一些 sshd 配置禁止你连接 /etc/hosts.allow 拒绝文件定义为 sshd: ip 但很可能 /etc/ssh/sshd_config AllowUsers user@ip1 user@iprange2.* risky ----------抓住 22 是你需要在远程服务器上检查所有这些 尝试 ssh -vakx 111.111.111.111 并向我们显示输出或谷歌错误 - 它可能是无密码和等待密钥或其他东西 @Abe,也许你误读了给定的命令——在-w 之后和 IP 地址之前有一个1【参考方案2】:

找出两条信息

目标 ssh 服务器的主机名或 IP 是什么 ssh 守护进程正在监听哪个端口(默认为端口 22)

$> telnet <hostname or ip> <port>

假设守护程序已启动并运行并在该端口上侦听它应该建立一个 telnet 会话。可能的原因:

ssh 守护进程没有运行 主机正在使用其软件防火墙阻止目标端口 一些中间网络设备正在阻塞或过滤目标端口 ssh 守护进程正在监听非标准端口 已配置 TCP 包装器并正在过滤掉您的源主机

【讨论】:

我得到user@localhost:~$ telnetmy.server 22<br\> Trying 111.111.111.11...<br\> Connected to my.server.<br\> Escape character is '^]'.<br\> SSH-2.0-OpenSSH_4.3<\br>Connection closed by foreign host. (其中<br\> = 换行) 听起来端口是开放的。现在尝试 ssh -v @【参考方案3】:

在服务器上,尝试:

netstat -an 

查看tcp port 22 是否打开(在Windows 中使用findstr 或在Unix 中使用grep)。

【讨论】:

如果无法上服务器,则无法执行此行 如果我无法访问服务器,我将如何运行此命令

以上是关于为啥我可以 ping 服务器但无法通过 SSH 连接? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器可以用SSH连接上,可是ping IP为啥不通

为什么我可以ping服务器,但无法通过ssh连接?(why can I ping a server but not connect via ssh?)

Laravel 无法连接到其他数据库服务器

ping对方的IP,为啥总是显示“请求超时”?

电信ipv6,公网为啥ping不通主机,但主机可以访问公网

网站ping域名和ping IP地址都可以Ping通,但为啥浏览器无法访问