为啥我可以 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 在服务器上,尝试:
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?)