SSH隧道的使用

合作部门提供的 redis 集群,kafka 集群,限制条件:无 vpn,仅能通过特定跳板机(无 root 权限)连接调试开发。

想要实现:本地开发连接其 redis 集群,kafka 集群进行开发调试等,否则就只能改一次代码打一次包上传了,众所周知 “Java 码农离开 ide(a) 就不会写代码了”。

项目配置文件中可仅填写一部分 redis 集群的节点,其他节点会自动发现,但是对于跑起来的项目来说,实际还是要连接上其他节点的,所以这就要求本地确实能够连接上所有节点(程序自动发现的 ip:port 即为其提供的不可直接访问的 ip:port)。

先考虑所有的 ip:port 组合都是不同的,即不会出现 192.168.1.2:6379, 192.168.1.3:6379 这种 ip 不同 port 相同的情况。

假设跳板机为 [email protected]:2222
redis cluster:
192.168.9.1:6379
192.168.9.1:6380
192.168.9.1:6381
192.168.9.2:6479
192.168.9.2:6480
192.168.9.2:6481

任务拆解:
1. 给本机(或者其他可控主机)配置所有的的 redis 绑定的 ip,kafka 同理;
2. 所有的 port 映射到对应的 redis 监听的 port,kafka 同理。

具体操作:
1. cmd -> ipconfig /ALL 记录本机现在的 ip 地址、子网掩码、默认网关、DNS 服务器等信息。

记录红线的内容填入下方的 "使用下面的 IP 地址"

配置多 ip

按照箭头一路填写把 redis 集群的 ip 都添加上即可

此时查看 cmd ipconfig /all

多出了 redis 集群相应的 ip ,且能 ping 通

这样 ip 就配置成功了

2. 端口的映射

ssh -L 192.168.9.1:6179:192.168.9.1:6179 \
    -L 192.168.9.1:6180:192.168.9.1:6180 \
    -L 192.168.9.1:6181:192.168.9.1:6181 \
    -L 192.168.9.2:6279:192.168.9.2:6279 \
    -L 192.168.9.2:6280:192.168.9.2:6280 \
    -L 192.168.9.2:6281:192.168.9.2:6281 \
-Nf [email protected] -p 2222

不用担心这是 *unix 命令怎么在 windows 上执行的问题,使用 git bash 就可以了。

使用 man ssh 查看下是干了点儿啥

-L 绑定地址端口 本地ip:本地port:目的ip:目的port
-N 不要执行远程命令,仅作端口转发
-f 后台执行

完工,现在访问 192.168.9.1 和 192.168.9.2 就会通过 跳板机(192.168.1.2) 连接上远端的 192.168.9.1 和 192.168.9.2。

最后,如果有存在 192.168.9.1:6379 和 192.168.9.2:6379 这样 ip 不同,端口相同的情况,可以考虑起虚拟机给虚拟机按照上面配置,当然虚拟机是用 windows 还是 *unix 就看熟悉哪个了。

猜你喜欢

转载自www.cnblogs.com/lixifun/p/11823743.html