三台linux服务器利用SSH隧道连接阿里云ESC内网连接RDS mysql

我的系统用的linux centOS7.8

场景:

本地服务器A:ip:192.168.0.1

阿里云ECS服务器B:ip:127.0.0.55(内网)

阿里云RDS服务器C: arm-xxxxxxxxxx.mysql.rds.aliyuncs.com  (阿里云RDS内网连接地址)

问题与目标:

  A服务无法直接连接C服务器,如果A要连接C服务器必须通过内网连接B服务器才能连接上C服务器

实现路径:

 一、A服务器利用生成ssh工具生成私钥与公钥公钥一般是id_ras.pub这样文件。

二、把A服务器的公钥xxx.pub复制到B服务器的 ~/.ssh/ 目录下 通过 ls命令查看一下文件

       再执行 cat xxx.pub >> authentor_key

三、回到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  -fNL 3308:rm-xxxxxxxxxx.mysql.rds.aliyuncs.com:3306 root@127.0.0.55

执行完如果没有报错的话,基本上已经成功了

可以查看一下A服务器的3308端口

显示正常

然后就可以执行数据库语句了:mysql -h127.0.0.1 -P3308 -uroot -p

可以访问。开心,如果不明白,可以加我微信:wodweixinhao   添加暗号: 技术咨询

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值