答案1
这个问题看起来很困惑,但我认为困惑是问题的一部分,所以我会尽力提供足够的背景来澄清事情。
HTTP协议和SSH是不同的协议。 HTTP 由 HTTP 客户端(称为 Web 浏览器)和 HTTP 服务器(称为 Web 服务器)使用。 SSH 由 SSH 客户端和 SSH 服务器使用。 HTTP 协议有代理的概念,其中网络节点接收来自客户端的 HTTP 请求并将其转发到服务器,并将响应从服务器转发回客户端。 SSH 没有技术意义上的代理;然而,一台允许不实际使用它的人在其上使用 SSH 客户端的机器就充当了一般英语意义上的代理。
http://www.freeproxy.ca/列出 HTTP 代理。它们对于建立 SSH 连接没有用处。
http://www.serfish.com/console/是一台运行 SSH 客户端的机器,该客户端由可公开访问的 Web 界面驱动。如果您使用Web浏览器连接到serfish,并在那里运行SSH客户端,那么就SSH服务器而言,您的连接来自serfish,句号。 SSH 服务器无法知道 SSH 客户端是由不在托管 Serfish 的数据中心内的人员驱动的。请注意,无论您是直接通过 HTTP 还是通过 HTTP 代理访问 Serfish 都没有关系。 SSH 服务器无法知道任何相关信息。
一般来说,服务器只能知道用于连接到它的最后一跳。这是安全问题吗?是的,但算不上危险。按地理来源过滤连接无法可靠地完成;任何有一定能力的系统管理员都知道这一点。地理起源可以提供有关连接是否可疑的线索,但它不是唯一的因素。世界各地都有被恶意软件感染并用作中继的机器。
SSH 的安全性不依赖于连接的地理来源。按地理来源进行过滤仅出于两个目的:
- 对于内容分发,限制 95% 的非技术受众可以做的事情(设置代理需要比大多数人愿意做的更深入的挖掘),并让 5% 的技术受众变得更加不方便(代理需要付费或搜索,并降低性能)。
- 作为与帐户的连接来自不寻常位置的提示 - 但这通常是在比国家/地区更细粒度的级别上完成的,因为国家/地区太宽泛而无法提供非常有用的提示。一些系统使用它来决定是否需要第二个身份验证因素。
无法跟踪 SSH(或任何)连接的最终来源的另一面是,一定程度的隐私是可能的。
答案2
因此,在使用 HTTP 时,可以通过从客户端查找特定标头来完成此操作,例如:
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_FORWARDED_FOR
HTTP_FORWARDED
但据我所知,SSH 不存在类似的标头和技术。
有代理黑名单这可能有用,但这绝不是一个安全的解决方案。