我对使用 SSH 和相关技术不熟悉,所以我很可能不理解一些基本的东西。
我正在尝试通过 SSH 连接到 Web 服务器(我拥有的),但由于超时而从未建立连接。
~ $ ssh -vvv example.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 example.com [123.45.67.89] port 22.
debug1: connect to address IPADD port 22: Operation timed out
ssh: connect to host example.com port 22: Operation timed out
我的第一个想法是我以某种方式指定了错误的域,或者我的网站出了问题。所以我尝试通过 FTP 连接到同一域,效果很好(提示输入用户名):
~ $ ftp
ftp> open
(to) example.com
Connected to example.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 (example.com:USER):
所以我想也许我只是错误地使用了 SSH。我开始看这个教程视频。大约 1 分钟后,他这样做并收到用户名提示,但它给了我与上面相同的超时。然后我尝试了同样的效果。另一方面,效果很好。所以问题似乎与网络上的 SSH 请求有关。ssh [email protected]
ssh google.com
ssh localhost
我的下一个想法是这可能是防火墙问题。我确实在这台计算机上安装了 Sophos,但根据我的管理员的说法,它“不应该”阻止传出 SSH 请求。
谁能帮忙弄清楚为什么会发生这种情况?
答案1
该错误消息意味着您要连接的服务器不会回复端口 22 上的 SSH 连接尝试。可能有以下三个原因:
- 您没有在计算机上运行 SSH 服务器。您需要安装它才能通过 ssh 连接到它。
- 您正在该计算机上运行 SSH 服务器,但使用的是非标准端口。您需要弄清楚它在哪个端口上运行;假设它在端口 2222 上,然后运行
ssh -p 2222 hostname
. - 您正在该计算机上运行 SSH 服务器,并且它确实使用您尝试连接的端口,但该计算机有防火墙不允许您连接到它。您需要弄清楚如何更改防火墙,或者可能需要从不同的主机进行 ssh 才能允许进入。
编辑:正如评论中(正确地)指出的那样,第三种情况肯定是这样;另外两个会导致服务器在客户端尝试连接时发送 TCP“重置”包,从而导致“连接被拒绝”错误消息,而不是您收到的超时。其他两个也可能是这种情况,但您需要先修复第三个,然后才能继续。
答案2
通过 telnet 命令检查您是否能够连接到 SSH 端口 22。如果无法连接,请检查它。首先,您应该能够连接到端口号。 22 到服务器。
默认情况下,SSH 端口为 22。但如果您配置了任何其他端口,则使用该端口而不是 22。
telnet <服务器的ip/url> <端口>
例如telnetdomain.com 22
答案3
这看起来很愚蠢,但它刚刚发生在我身上:确保您与要连接的设备位于同一网络上。我使用的是手机的热点 wifi,而不是家庭 wifi。
例如,您可以使用ping
:进行检查ping 192.168.0.3
。如果您无法 ping 计算机,则无法连接到它。您要么在错误的网络上,要么计算机没有运行。