我正在寻找一种将 ssh 连接从一个主机重定向到另一个主机的方法。当用户创建到主机 foo 的 ssh 连接时,我希望服务器返回一些响应,这会导致 ssh 客户端关闭到 foo 的 ssh 连接,而是连接到主机 bar。
重要的是,对于我想到的应用程序,不能简单地将 ssh 连接通过 foo 转发到 bar,因此标准端口转发是不可能的。一旦发生重定向,客户端应该将 TCP 数据包直接发送到 bar,而不是 foo(而不是通过 foo 发送到 bar)。
所以,粗略地说,我正在寻找一个类似于 HTTP 重定向的 SSH(这会导致客户端挂起原始连接并连接到它被重定向到的主机)。
对于我想到的应用程序来说,这也很重要,这不需要任何客户端配置。
那么有可能做到这一点吗?
SSH 协议中没有针对重定向的规定。阅读RFC 4251、RFC 4252和RFC 4253以了解连接协商的详细信息。
您可以将foo SSH 服务器设置为bar SSH 服务器的一种代理。
例如使用 OpenSSH,您应该能够使用
ForceCommand
SSH 连接到酒吧服务器:当然,必须将foo主机上的帐户配置为允许对bar进行无交互访问,例如通过使用未加密的私钥。
这将对客户端应用程序透明地工作。