我知道有很多人对这个问题有疑问,但我仍然不确定如何解决我的问题。我猜测我所在的位置的 SSH 连接被阻止了。使用家里的同一台 Macbook (OSX Mountain Lion) 可以让我毫无问题地访问。但是当我对连接进行详细输出时,我看不到数据来证明这一点:
ssh -vvv [email protected]
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/me/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to domain.com [xx.xxx.xxx.xx] port 22.
debug1: connect to address xx.xxx.xxx.xx port 22: Connection refused
ssh: connect to host domain.com port 22: Connection refused
我知道远程 Dreamhost 服务器上的端口 22 是开放的。我每天都从办公室或家里连接。那么为什么这个位置会拒绝它呢?这肯定是防火墙问题。那么有没有什么办法可以绕过这个问题呢?
答案1
连接被拒绝消息意味着已发送 TCP RST(重置)数据包以响应对端口 22 的连接尝试。当连接的端口在服务器上未打开时,会发送此消息。这里我们知道情况并非如此,因为您可以从其他位置进行连接。
因此,这不是 ssh 服务拒绝连接,而是在 TCP 层。RST 数据包可能来自服务器本身(可能来自防火墙)或任何中间设备。
如果 ISP 选择阻止某些端口,您将看到这种确切的行为,我猜这就是这里发生的情况。它也可能是该位置的本地防火墙。
最后,您在该特定位置所来自的 IP 地址可能已被识别为恶意活动来源,因此在 Dreamhost 上已被阻止。
您无法通过查看 RST 数据包来确定其真实来源,因为无论它实际来自何处,它都会包含您正在连接的服务器的源 IP。您唯一的选择是咨询本地网络管理员、本地 ISP 和 Dreamhost 本身,以查看它被阻止的位置。