您的位置:首页 > 健康 > 养生 > 有三台机器A,B,C ,A和B分别处于一个局域网内,C是一个允许Linux的公网服务器,如果通过ssh命令让A通过C访问B的指定端口?

有三台机器A,B,C ,A和B分别处于一个局域网内,C是一个允许Linux的公网服务器,如果通过ssh命令让A通过C访问B的指定端口?

2024/10/7 0:19:14 来源:https://blog.csdn.net/jackyvan/article/details/139362834  浏览:    关键词:有三台机器A,B,C ,A和B分别处于一个局域网内,C是一个允许Linux的公网服务器,如果通过ssh命令让A通过C访问B的指定端口?

有三台机器A,B,C ,A和B分别处于一个局域网内,C是一个允许Linux的公网服务器,如果通过ssh命令让A通过C访问B的指定端口?

要让机器A通过机器C访问机器B的指定端口,并且使用SSH,你可以设置一个SSH隧道。SSH隧道允许你通过SSH连接转发TCP端口。在这个例子中,你需要设置一个反向SSH隧道从机器B到机器C,然后在机器A上设置一个本地端口转发到机器C上的隧道端口。

这里是如何设置的步骤:
1. 在机器B上设置反向SSH隧道到机器C

首先,你需要在机器B上设置一个反向SSH隧道到机器C。你可以使用ssh命令的-R选项来做到这一点。

在机器B上执行以下命令:

bash
ssh -fN -R <local_port_on_C>:<host_or_ip_of_B>:<port_on_B> user@C -p C的端口

    <local_port_on_C> 是你希望在机器C上打开的端口,用于转发到机器B的<port_on_B>。
    <host_or_ip_of_B> 是机器B的IP地址或主机名。
    <port_on_B> 是机器B上你想要访问的端口。
    user@C 是机器C上的用户名和机器C的地址。

例如,如果你想要转发机器B上的22端口(SSH端口)到机器C上的3306端口,你可以这样做:

ssh -fN -R 3306:127.0.0.1:22 user@C -p C的端口

2. 在机器A上设置本地端口转发到机器C

现在,你需要在机器A上设置一个本地端口转发,将某个本地端口转发到机器C上的<local_port_on_C>。这样,当你连接到机器A的这个本地端口时,流量会被转发到机器C,然后通过SSH隧道转发到机器B。

在机器A上执行以下命令:

bash
ssh -L <local_port_on_A>:<host_or_ip_of_B>:<local_port_on_C> user@C -p C的端口

    <local_port_on_A> 是机器A上的本地端口,用于接收连接。
    <host_or_ip_of_B> 和 <local_port_on_C> 应该是你在机器B上设置的反向SSH隧道时使用的相同值。
    user@C 是机器C上的用户名和机器C的地址。

例如,如果你想要在机器A上使用本地端口4444来访问机器B的22端口,并且机器C上的隧道端口是3306,你可以这样做:


ssh -L 4444:127.0.0.1:3306 user@C -p C的端口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com