应用场景:由于我们用到的一个控制设备的服务器只能部署在跟设备属于同一个局域网的内网中,所以服务器的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、这个链接往往是不稳定的,这时候需要用一个端口负责监听链接是否断开,如果断开则自动重连