堡垒机ssh通道常驻【现网连数据库】

场景

为了数据安全,大多数据库不对外网开放,本地机器如果需要连接数据库,基本都是通过ssh通道的方式来连接。
基本原理是这样的:
你工作的电脑(客户端),是在一个外网环境下我们计作【A】好了;
数据库【比方说是mysql】所在的服务器在一个内网环境下(或者只有内网才能连接),我们计作【B】;
堡垒机和数据库在同一个内网,但可以通过外网访问,计作【C】;

我们通过Navicat或是datagrip等客户端访问数据库的时候
过程是这样的:
1、A会先通过ssh来连接C(一般是22端口);
2、A告诉C,让C来访问B,并把B的3306端口映射到A的某一个端口(默认随机也可以指定)上;
3、然后,客户端A就可以通过访问A自己的这个端口间接访问B了;

但是,并不是所以的数据库客户端都可以来配置ssh的,比方说,我们要在A上部署个数据调度系统;

所以,我们要用一个服务来帮助我们把前两步的事情做了,然后我们只要做后一步就好了;

很简单

/usr/bin/ssh -N -L 0.0.0.0:[A的端口]:[B的ip]:[B的数据库端口] [C的用户名]@[C的外网ip] -i /root/.ssh/id_rsa

举个🌰

/usr/bin/ssh -N -L 0.0.0.0:3306:10.10.10.243:3306 user1@10.30.0.136 -i /root/.ssh/id_rsa

这样,直接连接A机器的IP和3306端口就可以了

但是这样会断掉

我们把它包装成一个后台服务吧

cd /usr/lib/systemd/system
vim db_ssh.service

编辑


Description=db_ssh

Requires=network.target

After=network.target

[Service]

Type=simple

#开始命令
ExecStart= /usr/bin/ssh -N -L 0.0.0.0:3306:10.10.10.243:3306 user1@10.30.0.136 -i /root/.ssh/id_rsa
#重启等待时间
# RestartSec=1s
#重启时机
Restart=on-failure
KillMode=process

User=root

Group=root

[Install]

WantedBy=multi-user.target

然后:

systemctl daemon-reload

systemctl start db_ssh.service

查看服务状态

systemctl start db_ssh.service
ps aux | grep ssh

看看进程里有没有你想看到的就好啦

补充:
以上,可能还会有ssh经常自动断开的问题

需要修改下ssh客户端的配置
vim /etc/ssh/ssh_config

TCPKeepAlive=yes

ServerAliveInterval=15

在底部添加这个选项就ok 啦

祝好!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rocky_Think

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值