有三台机器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的端口

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值