如何使用ssh或其他工具将一个端口转发给其他端口?

我有一个传统的应用程序监听端口5050绑定到本地主机接口(即127.0.0.1)。 这个应用程序运行在一个Linux机器上(一个embedded式系统)。 我有一个应用程序,让我们称之为在PC上运行的应用程序C,并希望连接到它。 但不能像传统的应用程序不接受外部的连接。 我没有改变遗留应用程序源代码的选项。
有没有办法像ssh一样运行在端口7070上的embedded式盒子上侦听,并将传入的stream量转发到端口5050? 我知道ssh允许的。 但是它期望来自外部的ssltypes的连接。 我想知道是否可以启动只是做端口转发没有任何forms的ssl隧道的东西。 像SOCKS代理

如果你知道一个工作,你可以随意build议其他工具。

你也可以configurationxinetd来做到这一点:

定义一个在7070端口上运行的新服务,并使用redirect(来自man xinetd.conf

redirect允许一个tcp服务被redirect到另一个主机。 当xinetd在这个端口上收到一个tcp连接时,它会产生一个与指定的主机和端口号build立连接的进程,并在两个主机之间转发所有的数据。

SSH可以做你想做的事情。 请参阅SSH手册页 ,特别是-L-R选项( -LL ocal机器上创build一个监听器,转发到远程机器/networking上的某个节点。- -RR emote上创build一个监听器,在本地机器/networking上)。

使用-L-R转发的端口不需要任何特定的协议握手 – 转发对于连接到该端口的应用程序是透明的,尽pipe通道是通过SSHencryption的。

应该可以的。 尝试

 ssh -R *: 7070:localhost:5050 -N host.example.com 

我发现rinetd可以轻松做到这一点。 SSH期望sshd某处build立encryption的隧道,通过它来连接传入的连接。 rinetd是相当不错的,因为它不依赖于其他实体。 它只是做端口转发。