一个月前我可以通过 ssh 连接到远程服务器,但一周后就不行了。目前我可以从本地访问服务器,当我尝试连接到 localhost 以测试它是否有效时,我可以连接。 ssh 用户名@localhost
在当地是没问题的。
但从远程机器来看:
ssh 用户名@服务器的 ip 地址
我收到此消息:
ssh:连接到主机ip-address-of-server
端口 22:连接超时
该服务器上也运行着一个网页,当然是在端口 80 上。该网页可以正常运行。
注意:我可以 ping 服务器,数据包丢失率为 0%,因此我收到了所有传输的数据包。
我已经尝试在服务器上重新启动 ssh,但仍然不起作用。只能在本地主机上进行,而不能在远程进行。
我从不同的远程机器上尝试过,但没有成功。
那么,为什么我之前可以连接,现在却不能?这是什么问题?
I asked this already on [stackoverflow.com][1], but now it's put on hold as off-topic there.
答案1
尝试通过 ssh 连接时,在远程服务器上执行以下操作:
tail -f /var/log/auth.log
是否有任何错误日志?如果您无法看到尝试登录时产生的任何日志,则这可能是网络问题(防火墙、交换机 acl 等)。
答案2
正如您描述的场景,您想要执行“内部访问”和“外部访问”。就您而言,我理解内部访问是从主机到位于同一 IP 子网上的 SSH 服务器进行的。另一方面,您提到“远程访问”,我想您指的是从位于另一个 IP 子网上的主机访问 SSH 服务器(外部访问)。执行最新操作的唯一方法是通过路由器,除此之外,路由器还应该能够执行一项非常基本的功能,称为端口转发。话虽如此,由于某种原因,您的路由器失去了端口转发功能。有两种可能性:重新启动路由器,因为它变得“有缺陷”,或者修改路由器上的端口转发配置,将外部调用从路由器的 SSH 端口转发到内部 SSH 服务器的 SSH 端口。请注意,可能还存在许多其他因素,但描述没有提供足够的信息来进一步支持这种情况。无论哪种情况,故障排除工作都应放在路由器上,分析路由器是否在外部接口上接收 SSH 调用/命中,如果是,则分析路由器为何不将 SSH 流量转发到内部 SSH 服务器。如果您过去得到的解决方案是“按魔法”工作,而无需“做任何事情”,请检查路由器和服务器上的 UPnP 激活/功能。