测试外部网络的 SSH 访问

测试外部网络的 SSH 访问

我的公司环境中运行着一个应用程序,用户可以通过 SSH 访问该应用程序。公司网络内的所有用户(如服务器用户)都可以通过 SSH 访问此应用程序。

但是,突然间,来自我们公司网络之外的其他网络(已为其制定了必要的防火墙规则)的用户无法通过 SSH 访问此应用程序。从外部网络上的计算机,我们能够成功地远程登录到服务器的端口 22。但是,当我们尝试与公司网络上的服务器建立 SSH 连接时,我们收到一条消息,指出“服务器已关闭连接”。

已经在这个问题上徘徊了两周了。但无法得到解决方案。当可以对端口 22 进行 telnet 时,是否意味着客户端和服务器可以通过 SSH 成功通信而不受任何限制,或者 telnet 的能力是否并不意味着客户端和服务器之间可以进行完整的 SSH 2 方式通信?除了 telnet 之外,是否有一种方法可以测试客户端和服务器之间的 SSH 连接是否有效?

答案1

首先让您的客户端连接ssh -vvv(这将输出一些有关 ssh 正在执行的操作的调试信息)。这可能会帮助您诊断问题,这是最有可能阐明该问题的地方。

其次检查您是否使用主机名连接到 DNS 解析为正确主机的 SSH 服务器。

sshd 可以设置为使用TCP 包装器。您可能需要在 中添加条目/etc/hosts.allow

根据服务器使用的身份验证机制,如果用户没有使用正确的机制,他们将不会被允许。 (例如,如果将其设置为仅允许 PubkeyAuthentication并且您没有为该用户设置公钥,则他们将被拒绝)。

您可能已经PubkeyAuthentication设置并且客户端可能正在使用 SSH v1 进行连接(RSAAuthentication仅此而已)。

第三个 sshd 本身有许多配置设置,可以拒绝连接(man 5 sshd_config)以获取每个连接的详细信息:

 AllowUsers, DenyUsers, DenyGroups, AllowGroups, AuthorizedPrincipalsFile

相关内容