• ssh隧道(通过跳板机)连接mysql


    案例:

    A服务器   B服务器   C服务器mysql

    现在mysql服务器C只能通过内网访问,B服务器就能通过内网连接访问到mysql

    A服务器无法直接连接C服务器mysql,所以要通过跳板机(跳板机指的是B服务器)连接mysql

    实现:

    在A服务器下面执行命令

    ssh -p {ssh_port} -i {rsa_file} -fNL {local_port}:{mysql_ip}:{mysql_port} {ssh_user}@{ssh_ip}
     
    命令详解:
    • -p {ssh_port}: 指定跳板机器的ssh服务的端口(也就是B服务器)
    • -i {rsa_file}:指定连接跳板机的ssh公钥,由跳板机的ssh服务端生成,如果不指定公钥或者公钥验证失败则会弹出密码进行登录。(如果需要密码登录可以不填-i)
    • -f:告诉SSH客户端在后台运行(也就是执行命令之后在进程监听,需要关闭直接kill)
    • -N:只进行端口转发,不执行命令
    • -L:指定连接服务的格式 [bind_address:]port:host:hostport
    • {local_port}:本地监听的端口
    • {mysql_ip}:转发到的mysql的ip或域名(远程mysql主机地址)
    • {mysql_port}:转发到的mysql的端口
    • {ssh_port}:跳板机的
    • {ssh_user}:跳板机的ssh用户名(如果为rsa登录,则ras对应的用户名和ssh_user一致)
    • {ssh_ip}:跳板机的ip或域名
    参考实例:
    ssh -p 22 -i ./id_rsa.pub -fNL 3307:mysql_ip:3306 root@root_ip
     
    A服务器执行以上命令就可以连接远程MySQL了
     
    测试连接:
    首先查看端口有没有监听执行: ss -ntl

    看到3307端口说明监听了;

    使用mysql命令开始连接:

    mysql -h127.0.0.1 -P3307 -uroot -p    (此命令需要注意点-h要填,-P端口是大写,不然会连接到自己本地的mysql而不是远程的mysql)

    连接成功之后执行命令:

    show databases;

    看到的是自己远程mysql服务器上的数据库就说明连接成功了;

  • 相关阅读:
    HTML 5 标准属性
    启程
    【Java】自定义登陆拦截器
    【Java】将List中的实体按照某个字段进行分组的算法
    SpringBoot + MultipartFile 实现文件上传以及文件转移的功能以及配置全局捕获上传文件过大异常
    MySQL查询两门及两门以上不及格的学生,显示姓名
    java中可以用==来比较两个字符串是否相等吗
    自己动手Jquery插件
    10个可以直接拿来用的JQuery代码片段
    linux 安装python
  • 原文地址:https://www.cnblogs.com/JahanGu/p/9930855.html
Copyright © 2020-2023  润新知