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

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

作者: RockyThink | 来源:发表于2021-06-16 14:04 被阅读0次

    场景

    为了数据安全,大多数据库不对外网开放,本地机器如果需要连接数据库,基本都是通过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通道常驻【现网连数据库】

          本文链接:https://www.haomeiwen.com/subject/peixyltx.html