我有两台机器,一台运行 Windows,另一台运行 Ubuntu,并且在 Ubuntu 上运行一个应用程序,该应用程序连接到本地或远程运行的服务器对应方。服务器在 Windows 上远程运行,我试图通过将适当的端口(即 5555)从 Windows 转发到 Ubuntu,让 Ubuntu 上的客户端应用程序相信服务器实际上是在本地运行。然后我告诉客户端应用程序在本地连接到我设置的特定端口上的 127.0.0.1。发生这种情况时,我的终端中出现以下错误:
C:\>debug1: Connection to port 5555 forwarding to localhost port 5555 requested.
debug2: fd 9 setting TCP_NODELAY
debug2: fd 9 setting 0_NONBLOCK
debug3: fd 6 is 0_NONBLOCK
debug1: channel 3: new [direct-tcpip]
buffer_get_ret: trying to get more bytes 4 than in buffer 0
buffer_get_string_ret: cannot extract length
buffer_get_string: buffer error
此时 SSH 连接终止,我回到常规终端提示符。我对 SSH 的了解仅限于连接到另一台机器进行远程控制;端口转发对我来说很新,所以任何见解都非常感激!
更新:我通过远程端口转发从 Windows 计算机通过 SSH 连接到 Ubuntu 计算机解决了该问题。这实际上完成了与我之前尝试的完全相同的事情。当我将 Ubuntu 计算机上的客户端应用程序连接到在 Windows 上运行的服务器应用程序时,这种方式不会产生任何错误或断开连接。
虽然这当然让我很高兴,但是当我完成我的目标时,我现在想弄清楚为什么第二种方式有效(由 Windows 发起的从 Windows 到 Ubuntu 的远程端口转发)而第一种方式无效(由 Ubuntu 发起的从 Windows 到 Ubuntu 的本地端口转发)。