访问内网主机--ssh反向穿透+端口转发

应用场景:由于我们用到的一个控制设备的服务器只能部署在跟设备属于同一个局域网的内网中,所以服务器的IP地址对外是不透明的,并且也没有自己的公网IP,为了实现外部主机对这台内网服务器的访问,需要用到一个具有公网IP的云服务器,这里用的是腾讯云的云主机的ubuntu系统.

下面假设一些虚拟的数据来说明一下具体的方法:

假设我们的内网主机为主机A,IP为11.11.11.11,用户名:abc

假设我们的云服务器主机为主机B,IP为123.123.123.123,用户名:root

1、首先需要我们的两台主机都安装了ssh,我这里的我们的两台主机都是ubuntu系统的,都已经默认安装了ssh。然后需要在主机B上修改配置文件/etc/ssh/sshd_config中为GatewayPorts     yes

2、首先在主机A上操作,主机A向主机B发起ssh反向代理,主机B使用7777端口,主机A使用的是22端口

ssh -fCNR 7777:localhost:22 root@123.123.123.123

3、接着在主机B上建立正向代理,使用端口2345来进行本地转发,负责和外网通信

ssh -fCNL *:2345:localhost:7777 localhost

这时候在主机B就可以通过下面的命令登录主机A了

ssh -p2345 abc@123.123.123.123

4、这个链接往往是不稳定的,这时候需要用一个端口负责监听链接是否断开,如果断开则自动重连,首先我们需要将主机A的ssh公钥发给主机B,这样就可以免密码登录了(如果没有公钥则需要先生成),发送公钥的命令为

ssh-copy-id root@123.123.123.123

5、在主机A中安装autossh

sudo apt-get install autossh

执行命令,在7778端口监听链接情况,断开则重连

autossh -M 7778 -fCNR 7777:localhost:22 root@123.123.123.123

此时可以免密码访问云主机

ssh root@123.123.123.123

6、如果需要通过云主机(主机B)访问我们的内网服务器(主机A)的资源,比如说我们的内网中有一个web服务,监听8080端口,然后我们需要使用云服务器上的一个端口转发到主机A 的8080端口,在主机A输入命令

ssh -f -NT -R \*:8889:11.11.11.11:8080 root@123.123.123.123
这时候访问http://123.123.123.123:8889就可以访问到主机A的8080端口



参考链接:

https://www.cnblogs.com/kwongtai/p/6903420.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt内网穿透端口转发是一种将内网中的局域网设备通过穿透技术映射到公网上,实现公网访问的方法。Qt是一种跨平台的C++应用程序开发框架,可以用于编写各种类型的应用程序,包括网络通讯相关的应用。 内网穿透端口转发的实现原理是通过在 NAT 中间人攻击方式,将公网的请求转发到内网中指定设备的指定端口上,从而实现对内网设备的访问。Qt 提供了一些网络编程接口和类,可以用于实现内网穿透端口转发功能。 在 Qt 中实现内网穿透端口转发,可以使用 Qt 的网络编程库进行开发。首先需要创建一个 TCP 服务端,监听公网的请求。当收到请求后,根据请求的目标设备和目标端口,在内网中找到对应的设备,并将请求转发到该设备的指定端口上。 具体步骤如下: 1. 创建一个 QTcpServer 对象,调用其 listen 方法,监听指定的公网端口。 2. 当收到公网请求时,QTcpServer 会触发一个新连接的信号。 3. 在新连接的槽函数中,获取请求的目标设备和目标端口。 4. 在内网中找到对应的设备和端口,创建一个 QTcpSocket 对象,连接到该设备的指定端口上。 5. 将公网请求的数据通过 QTcpSocket 的 write 方法发送到内网设备。 6. 同时监听 QTcpSocket 的 readyRead 信号,当内网设备返回数据时,通过 QTcpServer 的 write 方法将数据返回给公网。 通过以上步骤,就可以实现 Qt 内网穿透端口转发的功能。需要注意的是,为了确保内网设备的安全性,应当对公网请求进行必要的身份验证和安全控制。同时,在代码实现中,还需要处理异常情况和错误处理,确保端口转发的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值