为什么我的所有SSH尝试都由于超时而失败?


22

我是使用SSH和相关技术的新手,所以很可能我不了解基本知识。(这也可能是服务器故障的问题。...不确定。)

我正在尝试通过SSH服务器连接到我拥有的Web服务器,并且由于超时而无法建立连接。

~ $ ssh -vvv DOMAIN.com
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USER/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to DOMAIN.com [123.45.67.89] port 22.
debug1: connect to address IPADD port 22: Operation timed out
ssh: connect to host DOMAIN.com port 22: Operation timed out

我的第一个想法是,我以某种方式指定了错误的域,或者我的站点出了点问题。因此,我尝试通过FTP连接到相同的域,并且工作正常(提示输入用户名):

~ $ ftp
ftp> open
(to) DOMAIN.com
Connected to DOMAIN.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 12:47. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (DOMAIN.com:USER):

因此,我想也许我只是在使用SSH错误。我开始观看本教程视频。在大约1分钟的时间内,他ssh will@supercars.com得到了用户名提示,但这给了我与上述相同的超时时间。然后ssh google.com,我尝试执行相同的操作。ssh localhost另一方面,效果很好。因此,问题似乎与网络上的SSH请求有关。

我的下一个想法是,这可能是防火墙问题。我确实在这台计算机上安装了Sophos,但是根据我的管理员的说法,它“不应”阻止传出的SSH请求。

谁能帮忙弄清楚为什么会这样吗?


8
这是您提供给我们的实时IP地址。它正在运行不安全的FTP连接。这可能不是一个好主意。端口22上也没有任何运行,我怀疑这是您问题的根源。您不能仅将ssh转换为任何内容,服务器需要运行sshd,而这似乎并非如此。如果是您的服务器,请打开ssh并关闭ftp。您可以在ssh运行后通过ftp进行ftp。
marinus 2015年

3
无需删除。我已经编辑了IP,并要求SE清除编辑历史记录。这样,回答您的人就不会失去任何声誉。
terdon

Answers:


24

该错误消息表示您要连接的服务器不会在端口22上答复SSH连接尝试。这可能有三个原因:

  1. 您没有在计算机上运行SSH服务器。您需要安装它才能使用ssh。
  2. 您正在该计算机上但非标准端口上运行SSH服务器。您需要确定它在哪个端口上运行。说它在端口2222上,然后运行ssh -p 2222 hostname
  3. 您正在该计算机上运行SSH服务器,并且该服务器确实使用了您尝试连接的端口,但是该计算机具有不允许您连接的防火墙。您将需要弄清楚如何更改防火墙,或者可能需要从其他主机进行SSH允许。

编辑:正如评论中(正确)指出的,第三个肯定是这样;其他两个将导致服务器在客户端尝试连接时向其发送TCP“重置”程序包,从而导致“连接被拒绝”错误消息,而不是您得到的超时。其他两个也可能是这种情况,但是您需要先修复第三个,然后才能继续。


6
如果未安装它,或者它正在其他端口上运行,那么他将收到连接被拒绝的消息。
Hut8

2
@ Hut8:是的。在您的3种可能性中,只有第三种(防火墙)可能会导致超时。
R..15

在Ubuntu上:sudo ufw allow 22; 然后做你的工作;sudo ufw deny 22.digitalocean.com/community/tutorials/…–
丹尼尔

我认为存在第四种可能性,即某种方式无法访问服务器(Internet路由问题,介于两者之间的某些故障...),即使您可以访问其他服务,因为选择的路由可能与ssh其他服务有所不同。
Alexis Wilke

3

通过telnet命令检查您是否能够连接到SSH端口22。如果无法连接,则进行检查。首先,您应该能够在端口号上进行连接。22到服务器。

默认情况下,SSH端口为22。但是,如果您配置了其他端口,请使用该端口代替22。

telnet <服务器的IP / URL> <端口>

例如telnet domain.com 22


2
这将超时相同(否则ssh -v日志将显示连接成功,而不是说超时)
Wouter Verhelst 2015年

@Wouter Verhelst是的,感谢您的澄清
AVJ

如何检查配置了哪个端口?配置新端口?
Yonatan Simson's

@YonatanSimson,假设您有权访问,则可以使用sudo netstat -a64npnetstat)并搜索sshd服务器(最后一列)。如果您没有访问权限,则可以尝试nmap
Alexis Wilke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.